Ich habe eine NSMutableArray
von benutzerdefinierten Objekten. Jeder enthält eine ID-Zeichenfolge, die eindeutig ist und jede eine downloadedDate
-Eigenschaft enthält.Entfernen Sie doppelte benutzerdefinierte Objekte aus NSMutable Array und stellen Sie sicher, dass das neueste Duplikat-Objekt
Objekte können zweimal hinzugefügt werden, daher muss ich die ID auf Duplikate prüfen, und wenn ich ein Duplikat finde, muss ich das mit dem neuesten Datum behalten.
Momentan mache ich Folgendes, um Duplikate zu entfernen, aber es berücksichtigt nicht, das Objekt mit dem neuesten Datum zu halten.
NSArray *originalArray = [NSArray arrayWithArray:mutableItems];
NSMutableArray *uniqueArray = [NSMutableArray array];
NSMutableSet *names = [NSMutableSet set];
for (ZSSObject *g in originalArray) {
NSString *destinationName = g.code;
if (![names containsObject:destinationName]) {
[uniqueArray addObject:g];
[names addObject:destinationName];
}
}
NSArray *uniqueObjects = uniqueArray;
Objekte erhalten wie folgt erstellt:
ZSSObject *obj = [ZSSObject alloc] init];
obj.code = @"12345";
obj.downloadedDate = [NSDate date];
Gibt es einen einfacheren Weg, dass ich ein paar Kopien meiner Array und verschachtelte Schleifen wollen zu tun, als mit?
Es klingt wie Sie ein Wörterbuch, anstatt ein Array verwendet werden soll. Dann können Sie das Datum überprüfen, bevor Sie das neue Objekt dem Wörterbuch hinzufügen. – Paulw11
Sortierung originalArray vor der Schleife nach dem absteigenden Datum wird Ihr Problem lösen, denke ich. – meth
@ Paulw11 - Ich habe gerade eine Antwort geschrieben, lassen Sie mich wissen, ob das ist, was Sie dachten. –