2016-11-10 2 views
-1

Ich habe Wörterbuch und ich fügen TableView hinzu.Wie lösche ich Gruppendaten in 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"]] 

In diesem Wörterbuch habe ich Schlüssel GroupID.

Ist es möglich, dass ich Wörterbuchdaten bekommen kann, deren GroupID = %@?

Ich möchte zum Filtern von Daten basierend auf

Gruppierung

nehme ich vier Daten haben, und Gruppen-ID ist in zwei Daten gleich. Ich möchte alle Daten löschen, deren GroupID aus dem Wörterbuch identisch ist.

Wenn groupid == 1 werden Daten aus dem Wörterbuch gelöscht, deren GroupID == 1 und tableview Daten erneut laden werden.

Ich mache das, weil ich Gruppendaten löschen möchte.

+1

Wollen Sie Ihr Array ohne groupid zu wiederholen? Oder willst du dein Array ohne diese Groupid, die sich wiederholen? – Rajat

+0

@Rajat danke für schnelle Antwort. eigentlich habe ich Haupt- und Nebenprodukte. Jedes Hauptprodukt hat seine Unterelemente. Wenn ich das Hauptelement lösche, sollten auch seine Unterelemente gelöscht werden. dafür denke ich, ich sollte Groupid dafür verwenden. Ist das richtig? –

+0

Ok, nach dem Löschen von Item sollten alle Unterelemente mit dieser Groupid entfernt werden, oder? – Rajat

Antwort

3

Sie können filter auf Ihrem Array verwenden diese Wörterbücher aus dem Array zu entfernen, lesen Sie in diesem Beispiel

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

dies funktioniert auch –

+1

Sie können die Klammern um den Filterblock zu entfernen. – ganzogo

+0

Lassen Sie ProductDict = arrProductCart [sender.tag] as! [String: ANYOBJECT] print (productDict) var filteredSubitems = productDict.filter { $ 0 [ "groupid"] = "1" // Wechsel mit Ihrem groupid !} –

1

Hier ist eine einfache Möglichkeit, es zu tun:

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

print(myArray): 

Es druckt:

[[ "name": "Zweites Element", "GroupID": "2", " foo ": "bar"], [" name ": "Zweites Element", "GroupID": "2", "foo": "bar"]]

Viel Glück!

+0

Wert des Typs '[Dictionary ]' hat kein Element 'remove' –

+0

Haben Sie 'Foundation' oder' UIKit' importiert? –

+0

Ist das Array, das Sie in der Frage geschrieben haben, Ihr tatsächliches Array? Kannst du das eigentliche herausbringen? –