我是新來的斯威夫特3,我有這個數組字典的斯威夫特卡倫特3:排序[字典<String, Any>]斯威夫特3
var arrayPOIsLoaded = [Dictionary<String, Any>]()
而且我想通過的關鍵「名」對它進行排序字典。
我看這裏,但似乎沒有任何工作。
我試過使用謂詞但沒有成功。
任何幫助將不勝感激。
在此先感謝。
我是新來的斯威夫特3,我有這個數組字典的斯威夫特卡倫特3:排序[字典<String, Any>]斯威夫特3
var arrayPOIsLoaded = [Dictionary<String, Any>]()
而且我想通過的關鍵「名」對它進行排序字典。
我看這裏,但似乎沒有任何工作。
我試過使用謂詞但沒有成功。
任何幫助將不勝感激。
在此先感謝。
感謝所有。
這是寫它的正確方法:
self.arrayPOIsLoaded.sorted { ($0["name"] as! String) < ($1["name"] as! String) }
您必須添加()
問候。
試試這個
var arrayPOIsLoaded = [Dictionary<String, String>]()
let sortedArray = arrayPOIsLoaded.sorted {$0["name"]! as? String < $1["name"]! as? String}
給我一個錯誤「二元運算符不能應用於兩個任何「 –
是的編輯它有點'$ 0 [」名稱「]爲? String' –
它只是'arrayPOIsLoaded.sort {$ 0 [「name」] as!字符串<$ 1 [「name」] as!如果所有字典都沒有'name'鍵,那麼'arrayPOIsLoaded.sort {($ 0 [「name」] as?String ??「」)<($ 1 [「name」] as?String ??「」)} ' –
@NiravD我試過這個:self.arrayPOIsLoaded.sorted(通過:{$ 0 [「name」] as!String <$ 1 [「name」] as!String})但是說預期的類型 –
這聽起來像你應該有一些模型類型的數組而不是一組字典。這樣做會消除強制轉換和字符串鍵(即使您的數據結構強類型化,而不是* stringly * typed;))。 – Hamish