[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
    object.dynamicType
    // __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?
Zhaoxin
-------------- 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