2017-09-23 8 views
1

基本的に、NSarraydictionariesは、ビューが表示されたときにJSON応答として1回だけ表示されます。さて、辞書のキーの特定の値を数秒ごとに別々の別の辞書のセットで更新して、それらの値で辞書の配列を連続的に更新し、画面上にリアルタイムのデータセットを表示できるようにする必要があります。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

説明が必要な場合はお気軽にお問い合わせください:) –

関連する問題