2017-09-23 104 views
1

基本上,當出現視圖時,我有一個NSarraydictionaries作爲JSON響應來使用。現在,我需要每隔幾秒更換一組字典中的某個鍵的特定值,以便我可以用這些值連續更新字典數組,並在屏幕上顯示一些實時數據集。Swift - 使用另一個NSDictionary中的值更新NSDictionary數組

:這是字典的陣列我從後端獲得

[ 
    {item_id: 1001, name: "Apple", current_price: "$10"}, 
    {item_id: 1009, name: "Orange", current_price: "$15"}, 
    {item_id: 1004, name: "Mango", current_price: "$5"} 
] 

當前價格是一些東西,連續地變化,其數據我分別接收在NSDictionary格式。

["1009": "$16", "1004": "$3", "1001": "$11"] 

正如你可以看到新的NSDictionary映射與item_id目前的價格值。

我需要一種方法來確保當前價格從此NSDictionary更新到字典數組,以便我可以重新使用該數組來重新加載我的UITableview並顯示更新的實時價格。

+1

這是斯威夫特。你爲什麼使用'NSArray'和'NSDictionary'? – the4kman

+0

@ the4kman我剛剛從objectiveC切換到Swift語言,認爲我從這個角度來說是一個初學者。如果您可以編輯該問題以使其更加友好,那麼您非常歡迎。 – Subso

+0

您能否澄清您遇到的技術難題?是否將價格存儲在一系列詞典中,並且每次價格更新時都必須通過整個數組? – Baglan

回答

2

你可以這樣說:

let items = [["item_id": 1001, "name": "Apple", "current_price": "$10"], ["item_id": 1009, "name": "Orange", "current_price": "$15"], ["item_id": 1004, "name": "Mango", "current_price": "$5"]] 

let prices = ["1009": "$16", "1004": "$3", "1001": "$11"] 

let updatedItems = items.map { itemDict -> [String: Any] in 
    var updatedItem = itemDict 
    if let idKey = itemDict["item_id"] as? Int { 
     prices["\(idKey)"].flatMap { updatedItem["current_price"] = $0 } 
    } 
    return updatedItem 
} 
+0

如果您需要任何解釋 - 請隨時問:) –