2017-06-02 65 views
0

我是新來的斯威夫特3,我有這個數組字典的斯威夫特卡倫特3:排序[字典<String, Any>]斯威夫特3

var arrayPOIsLoaded = [Dictionary<String, Any>]() 

而且我想通過的關鍵「名」對它進行排序字典。

我看這裏,但似乎沒有任何工作。

我試過使用謂詞但沒有成功。

任何幫助將不勝感激。

在此先感謝。

+1

它只是'arrayPOIsLoaded.sort {$ 0 [「name」] as!字符串<$ 1 [「name」] as!如果所有字典都沒有'name'鍵,那麼'arrayPOIsLoaded.sort {($ 0 [「name」] as?String ??「」)<($ 1 [「name」] as?String ??「」)} ' –

+0

@NiravD我試過這個:self.arrayPOIsLoaded.sorted(通過:{$ 0 [「name」] as!String <$ 1 [「name」] as!String})但是說預期的類型 –

+1

這聽起來像你應該有一些模型類型的數組而不是一組字典。這樣做會消除強制轉換和字符串鍵(即使您的數據結構強類型化,而不是* stringly * typed;))。 – Hamish

回答

1

感謝所有。

這是寫它的正確方法:

self.arrayPOIsLoaded.sorted { ($0["name"] as! String) < ($1["name"] as! String) } 

您必須添加()

問候。

1

試試這個

var arrayPOIsLoaded = [Dictionary<String, String>]() 
let sortedArray = arrayPOIsLoaded.sorted {$0["name"]! as? String < $1["name"]! as? String} 
+1

給我一個錯誤「二元運算符不能應用於兩個任何「 –

+0

是的編輯它有點'$ 0 [」名稱「]爲? String' –