Swift中使用数组/字典的键值编码(KVC)

时间:2014-10-14 17:59:29

标签: swift key-value-coding

是否可以使用本机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

4 个答案:

答案 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 }

您可以直接引用属性或方法,而不必使用键路径。