是有可能的键 - 值码(KVC)与天然夫特数据结构,诸如数组和字典?键 - 值编码仍然可以使用内斯威夫特NSFoundation结构,就像在目标C.
例如,这是有效的:
var nsarray: NSArray = NSArray()
// Fill the array with objects
var array: NSArray = nsarray.valueForKeyPath("key.path")
但是,这是无效的:
var swiftarray: Array = []
// Fill the array with objects
var array = swiftarray.valueForKeyPath("key.path") // Invalid, produces a compile-time error
看来,KVC原生斯威夫特对象是不支持的。这里是最优雅的解决办法,我发现:
var swiftarray: Array = []
// Fill the array with objects
var array: NSArray = (swiftarray as NSArray).valueForKeyPath("key.path") as NSArray
我发现这一点:
var array = swiftarray.map({$0["key.path"]! as ObjectType})
你可以做到以下几点:
let items : Array<String> = (myArray as AnyObject).valueForKeyPath("name") as! Array<String>
这个怎么样:
let names = array.map { $0.name }
而不是使用关键路径,你可以直接参考属性或方法。