Swift - 使用另一个NSDictionary的值更新NSDictionary数组

时间:2017-09-23 07:39:39

标签: ios arrays swift parsing nsdictionary

基本上,当视图出现时,我只有$_SESSION['ambprev'] = $ambnum; NSarray作为JSON响应。现在,我需要更新这些字典中的键的特定值,并且每隔几秒钟就会分别出现另一组字典,以便我可以使用这些值连续更新我的字典数组,并在屏幕上显示一些实时数据集。

示例:这是我从后端获取的字典数组

dictionaries

当前价格是不断变化的,我以[ {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并显示更新的实时价格。

1 个答案:

答案 0 :(得分: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
}