2017-10-05 43 views
-1

我正在使用Swift和Firebase。我目前正在將我的firebase快照對象存儲在全局字典中。這個想法是根據一個或多個鍵的值來過濾這些對象。如何遍歷對象字典及其鍵

例如,pendingFilter()可能會返回所有那些「掛起」鍵等於true的對象,並忽略其餘的。

陣列創建這樣的:

var array = [NSDictionary]() 

所有對象被追加作爲AnyObject。

我目前使用的字典看起來是這樣的:

[{ 
    accepted = false; 
    cancelled = false; 
    id = "1"; 
    pending = true; 

}, { 
    accepted = false; 
    cancelled = false; 
    id = "2"; 
    pending = true; 

}, { 
    accepted = true; 
    cancelled = false; 
    id = "3"; 
    pending = false; 
}] 

在我的過濾功能,我知道我可以在每個項目重複使用的項,但如何將一個去,然後通過爲關鍵值過濾對象本身?有沒有一種首選的Swifty方法?我知道項目中的(鍵,值),但這似乎嚴格適用於字典而不是對象。

感謝您的幫助......

+0

可能的複製[迭代通過在夫特一個字典(https://stackoverflow.com/questions/24111627/iterating-through-a-dictionary-in-swift) – arvidurs

回答

3

您可以使用filter有隻字典用鑰匙pending一套以true值。的

var pendingFilter: [NSDictionary] { 
    return array.filter { $0.value(forKey: "pending") as? Bool == true } 
} 
+1

大,直接的解決方案。這工作。謝謝! – sharedev

+0

@sharedev等待一會兒。如果您實際上將值作爲AnyObject存儲在數組中,則此答案將不起作用。 Any類型的值沒有成員.value,這對鍵值有意義:value對是Dictionary結構,而不是任何結構。您應該考慮將數據存儲爲類或結構,以便您可以直接訪問此答案中建議的屬性。 – Jay