关键值在夫特编码(KVC)使用Array /词典

问题描述 投票:6回答:4

是有可能的键 - 值码(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
swift key-value-coding
4个回答
11
投票

看来,KVC原生斯威夫特对象是不支持的。这里是最优雅的解决办法,我发现:

var swiftarray: Array = []
// Fill the array with objects
var array: NSArray = (swiftarray as NSArray).valueForKeyPath("key.path") as NSArray

8
投票

我发现这一点:

var array = swiftarray.map({$0["key.path"]! as ObjectType})

2
投票

你可以做到以下几点:

let items : Array<String> = (myArray as AnyObject).valueForKeyPath("name") as! Array<String>

0
投票

这个怎么样:

let names = array.map { $0.name }

而不是使用关键路径,你可以直接参考属性或方法。

© www.soinside.com 2019 - 2024. All rights reserved.