根据本帖:http://roadfiresoftware.com/2014/07/swift-strings-arent-objects/
字符串不是swift中的对象。所以我们不能将“anyobject”用于字符串,而应该使用“any”类型。
但当我将字符串赋给任何对象时,它就工作了。
例如:

let str:String = "myString"
let things: [AnyObject] = ["hello",str, 3]


for item in things
{
    println(item)
}

输出:
hello
myString
3

我错过了什么?

最佳答案

正确的说法是,String是一个值类型,而不是引用类型。但是,为了保持与现有API的兼容性,SWIFT在Swift的String和基金会的NSString之间提供了隐含的和自动的桥接,这是一种引用类型。
因此,当swift字符串强制转换为AnyObject时,它会自动桥接到NSString
请注意,swift数组、字典和数字类型也具有桥接对应项(分别为NSArrayNSDictionaryNSNumber

10-08 08:20
查看更多