字符串不是对象
Strings aren’t objects
根据这个post: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
我错过了什么?
说 String
是值类型而不是引用类型是正确的。然而,为了保持与现有 API 的兼容性,Swift 在 Swift 的 String
和 Foundation 的 NSString
之间提供隐式和自动桥接,这是一种引用类型。
因此,当 swift 字符串转换为 AnyObject
时,它会自动桥接到 NSString
。
请注意,swift 数组、字典和数字类型也有桥接对应物(分别为 NSArray
、NSDictionary
和 NSNumber
)
根据这个post: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
我错过了什么?
说 String
是值类型而不是引用类型是正确的。然而,为了保持与现有 API 的兼容性,Swift 在 Swift 的 String
和 Foundation 的 NSString
之间提供隐式和自动桥接,这是一种引用类型。
因此,当 swift 字符串转换为 AnyObject
时,它会自动桥接到 NSString
。
请注意,swift 数组、字典和数字类型也有桥接对应物(分别为 NSArray
、NSDictionary
和 NSNumber
)