根据本帖: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数组、字典和数字类型也具有桥接对应项(分别为NSArray
、NSDictionary
和NSNumber
)