什么是最方便的代码编写如何在Swift中编写array.valueForKey?
[results valueForKey:@"attribute"]
在迅速? 我发现here,它的推荐使用地图()函数与闭合:
swiftarray.map({$0["attribute"]})
注: swiftarray不是NSArray的
什么是最方便的代码编写如何在Swift中编写array.valueForKey?
[results valueForKey:@"attribute"]
在迅速? 我发现here,它的推荐使用地图()函数与闭合:
swiftarray.map({$0["attribute"]})
注: swiftarray不是NSArray的
什么是最方便的代码写
[results valueForKey:@"attribute"]
在swift?
这将是:
results.valueForKey("attribute")
对于自定义对象数组,我得到错误'Value of type'[TestObject]'has no member'valueForKey'' –
@JamesWebster很明显,您发送的对象'valueForKey'需要是一个派生自NSObject的类,因为这就是'valueForKey'所在的地方。如果你有一个数组,它需要是一个NSArray,它的元素需要是NSObject的衍生物。但这不是OP所要求的(据我所知)...或者是这样吗? – matt
@Matt为什么你认为数组是从NSObject派生的?这是一个快速数组,而不是NSArray。我也收到消息没有成员'valueForKey'。否则,这个问题将是一个非常愚蠢的问题。 – aneuryzm
类是否有一个标?
我已经能够创建一个测试类可以使用KVC访问器,像这样:
class TestObject
{
var name:String
var numbers:[String:Int] = [String:Int]()
init(name:String)
{
self.name = name
}
subscript(index: String) -> Int? {
get {
return numbers[index]
}
set(newValue) {
numbers[index] = newValue
}
}
}
用下面的代码进行测试:
let testObject1 = TestObject(name: "test1")
testObject1["home-phone"] = 1234
testObject1["mobile-phone"] = 5678
let testObject2 = TestObject(name: "test2")
testObject2["office"] = 0987
testObject2["mobile-phone"] = 6543
let array : [TestObject] = [testObject1, testObject2]
var results = array.map({$0["office"]})
print("Results:\(results)")
results = array.map({$0["mobile-phone"]})
print("Results:\(results)")
产生以下结果:
Results:[nil, Optional(987)]
Results:[Optional(5678), Optional(6543)]
出于某种原因,我的电脑已经决定不再想运行任何Swift代码(有用...),但我敢肯定你可以运行这只是从它删除括号?我想可能两种方法都是有效的。你在操场上试过这个吗? TBH,我看不出你得到的错误与你发布的代码有关吗?它绝对是来自它吗? – Fogmeister
你可以发布整个用例吗?你的阵列是什么类型? – Sulthan
@Fogmeister“我的电脑已经决定不再想运行任何Swift代码”哇,我想我想听听更多关于_that_! – matt