数组支持任何类型的值
Posted
技术标签:
【中文标题】数组支持任何类型的值【英文标题】:Array supports values of any type 【发布时间】:2015-08-14 09:43:20 【问题描述】:根据 swift 文档 - “数组将相同类型的值存储在有序列表中。”
摘自:Apple Inc.“Swift 编程语言”。电子书。 https://itun.es/in/jEUH0.l
var justBlankArray = []
var a:Int = 4
var b:Dictionary = ["Address":"Silver Oaks"]
justBlankArray = ["Tush",a,b]
println(justBlankArray[0].classForCoder)
println(justBlankArray[1].classForCoder)
println(justBlankArray[2].classForCoder)
输出-
NSString NSNumber NSDictionary
谁能告诉我这是怎么回事?它们不是数组中的不同类型吗?
【问题讨论】:
空白数组采用anyObject..如果您在数组中定义任何类型而不是仅采用该类型 非常感谢! 【参考方案1】:创建的justBlankArray
是NSArray
类型,而不是Swift 类型Array
。如果你想在 Swift-type Array
中存储任何类型的对象,你可以这样做:
var justBlankArray : [AnyObject] = []
它创建一个可以容纳任何类型对象的数组。即使是 C 结构,NSArray
也做不到。
【讨论】:
看看 NSArray 做了什么 - NSArray *arr = @[@"String",@5,@@"name": @"tush"];是的,在这种情况下它会考虑任何对象。 您对我的回答有何顾虑?【参考方案2】:当你像这样创建数组时:
var justBlankArray = []
类型为NSArray
,NSArray 可以保存异构数据。 (意味着它可以容纳任何物体)
如果您使用以下方法打印justBlankArray
的类:
println(justBlankArray.classForCoder)
它会给你NSArray
作为结果。
【讨论】:
【参考方案3】:如果你没有为数组字面量指定类型,它会被推断为NSArray
。 NSArray
可以容纳任何类型的类对象 (AnyObject
)。
【讨论】:
以上是关于数组支持任何类型的值的主要内容,如果未能解决你的问题,请参考以下文章