2016-11-10 7 views
-1

私は辞書を持っており、tableViewに追加しています。Swiftでグループデータを削除するには?

let myArray = [["name": "First element", "foo": "bar","GroupID":"1"], ["name": "First element", "foo": "bar","GroupID":"1"],["name": "Second element", "foo": "bar","GroupID":"2"], ["name": "Second element", "foo": "bar","GroupID":"2"]] 

この辞書には、キーGroupIDがあります。

GroupID = %@の辞書データを取得することは可能でしょうか?私は

のグループ化に基づいてデータをフィルタリングする

は、私は4件のデータがあると、グループIDは、2つのデータでも同じです。 GroupIDが辞書から同じデータをすべて削除したい

groupid == 1よりも大きいデータは辞書から削除され、GroupID == 1とtableviewはデータをリロードします。

グループデータを削除したいので、この操作を行っています。ここで

+1

をチェック!または繰り返しているそれらのgroupidなしであなたの配列をしたいですか? – Rajat

+0

@Rajat迅速な対応に感謝します。実際に私はメインとサブ製品を持っています。各主要商品には副項目があります。主項目を削除すると、その副項目も削除する必要があります。それのために私はそれのためにgroupidを使うべきだと思います。これは正しいですか? –

+0

これで、Itemを削除した後、そのgroupidを持つすべてのサブアイテムを削除する必要があります。 – Rajat

答えて

3

あなたの配列から、これらの辞書を削除するには、あなたのArrayfilterを使用することができ、あなたがグループIDを繰り返すことなく、あなたの配列をしたいです。この例

var subitems: [[String:String]] = [ 
    ["groupid": "1", "b": "2"], 
    ["groupid": "3", "b": "4"], 
    ["groupid": "1", "b": "6"] 
] 

var filteredSubitems = subitems.filter{ 
    $0["groupid"] != "1" // change with your groupid 
} 

print(filteredSubitems) 
+0

これも動作します –

+1

フィルタブロックのまわりの括弧も削除できます。 – ganzogo

+0

productDict = arrProductCart [sender.tag]を次のようにしましょう! [文字列:ANYOBJECT] プリント(productDict) するvar filteredSubitems = productDict.filter { $ 0 "グループID"] = "1" //あなたのグループID 変化!} –

1

はそれを行うための簡単な方法です:

var index = 0 
for element in myArray { 
    if element["GroupID"] == "1" { 
     myArray.remove(at: 0) 
     index += 1 
    } else { 
     index += 1 
    } 
} 

print(myArray): 

それが出て出力します。

[[ "名前": "第二の要素"、 "グループID": "2"、 " FOO ": "バー"]、[" 名前 ": "第二の要素"、 "グループID": "2"、 "foo" という: "バー"]]

幸運!

+0

タイプ '[Dictionary ]の値にメンバ' remove 'がありません –

+0

'Foundation'または' UIKit'をインポートしましたか? –

+0

質問に書いた配列はあなたの実際の配列ですか?あなたは実際のものを出すことができますか? –

関連する問題