什麼是最方便的代碼編寫如何在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