是否可以使用本机Swift数据结构(如数组和字典)来键值代码(KVC)?键值编码仍可用于Swift中的NSFoundation结构,就像在Objective 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
答案 0 :(得分:11)
似乎不支持本机Swift对象上的KVC。这是我发现的最优雅的解决方法:
var swiftarray: Array = []
// Fill the array with objects
var array: NSArray = (swiftarray as NSArray).valueForKeyPath("key.path") as NSArray
答案 1 :(得分:8)
我发现了这个:
var array = swiftarray.map({$0["key.path"]! as ObjectType})
答案 2 :(得分:2)
您可以执行以下操作:
let items : Array<String> = (myArray as AnyObject).valueForKeyPath("name") as! Array<String>
答案 3 :(得分:0)
如何?
let names = array.map { $0.name }
您可以直接引用属性或方法,而不必使用键路径。