[swift-users] Bool with Foundation framework, can convert to AnyObject

zh ao owenzx at gmail.com
Wed May 25 04:11:13 CDT 2016

We were told that Bool can't downcast to AnyObject in Swift. However, with
Foundation framework, we can.

do {

    let a:Bool = true

    let object:AnyObject = a as AnyObject


    // __NSCFBoolean.Type

    let b:Bool = object as! Bool

    b // true


This feature works in some code automatically (like in a Dictionary), but
in some other codes(like in a function), you have to downcast it yourself.

do {

    var dictionary = Dictionary<String, AnyObject>()

    func update<T:AnyObject>(value:T, key:String) {

        dictionary.updateValue(value, forKey: key)


    let aBool = true

    let key = "testBool"

    dictionary.updateValue(aBool, forKey: key)

    // works

    update(aBool, key: key)

    // doesn't work. cannot invoke 'update' with an argument list of type
'(Bool, key: String)'

    update(aBool as AnyObject, key:key)

    // works


My question: Is this normal? Should it all be automatic or not?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160525/f8927531/attachment.html>

More information about the swift-users mailing list