2017-09-23 71 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

如果您需要任何解释 - 请随时问:) –