nicht aufrufen Das Ziel dieses Codes unten ist das Ausfiltern von Wörterbüchern mit einer bestimmten ID, wobei ID eine Zeichenfolge ist.Swift: Filterfunktion für ein Array von Wörterbüchern verwenden? Fehler: Kann 'Filter' mit einer Argumentliste vom Typ
let dictArray = networkData["dicts"] as! [[String:AnyObject]]
localData["dicts"] = dictArray.filter{ ($0["id"] as! String) != sample.getId() }
Dieser Code erzeugt jedoch einen Fehler:
Cannot invoke 'filter' with an argument list of type '(([String : AnyObject]) throws -> Bool)'
Basierend auf anderen SO Antworten wie this one und this one, es scheint der Fehler ist die Wörterbücher nicht übereinstimmen Equatable
.
So ist die einzige Option für die Verwendung filter
, um eine benutzerdefinierte Klasse zu erstellen, um das Array von Wörterbüchern aufzunehmen und diese Klasse Equatable
konform zu machen?
Wenn ja, scheint es sauberer zu sein, einfach zu iterieren und ein neues Array zu erstellen.
Was sind * Hash-Objekte *? – Alexander
Bitte stellen Sie sicher, dass Sie 'filteredData definieren: [String: [[String: AnyObject]]]' – bubuxu
@Alexander Er bedeutet wahrscheinlich Wörterbücher – matt