字符串不是对象

时间:2015-01-21 20:39:51

标签: string swift

根据这篇文章:http://roadfiresoftware.com/2014/07/swift-strings-arent-objects/ 字符串不是swift中的对象。因此我们不能将“AnyObject”用于字符串,我们应该使用“Any”类型。

但是当我将字符串分配给AnyObject时,它正在工作。

例如:

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


for item in things
{
    println(item)
}

输出:

hello
myString
3

我缺少什么?

1 个答案:

答案 0 :(得分:3)

正确的说法是String是值类型而不是引用类型。但是,为了保持与现有API的兼容性,Swift在Swift的String和基金会NSString之间提供了隐式和自动桥接,这是一种参考类型。

因此,当快速字符串转换为AnyObject时,它会自动桥接到NSString

请注意,swift数组,字典和数字类型也有桥接对应物(分别为NSArrayNSDictionaryNSNumber