Mit NSSet/NSMutableSet, Filter-Objekte?
Habe ich einige Fragen/Antworten zum filtern von Objekten mithilfe von NSSet/NSMutableSet. Diesen Fällen verwenden Sie einfach den Typ von Objekten wie NSString
oder int
. Der folgende Code ist ein Beispiel des codes verwendet, um filter NSString
Objekte:
NSSet smallArray = [[NSSet alloc] initWithObjects:@"0", @"1", @"2", nil];
NSArray bigArray = [[NSArray alloc] initWithObjects:@"0", @"1", @"4", @"5", ..., nil];
NSMutableSet *intersection = [NSMutableSet setWithArray:smallArray];
[intersection intersectSet:[NSSet setWithArray:bigArray];
NSArray *result = [NSArray arrayWithSet:intersection];
Ich bin nicht sicher, wie es funktioniert, wenn Objekte im Satz oder array-Objekt-C-class-Instanzen. Nehmen Sie die folgende Klasse als Beispiel:
@interface MyObject: NSObject {
int id;
NSString *name;
NSString *city;
...
}
Ich bin nicht sicher, wie Sie Sie eingestellt ist intersetSet: funktioniert mit den oben Objekte des Typs. Wenn ich will intersect set smallArray von MyObject
Objekte und bigArray nur durch Vergleich von id, bezweifle ich, wenn ich intersetSet:
selector-Methode? Wenn nicht, nicht sicher, ob ich sollte hinzufügen, eine Methode zu MyObject
Klasse so eingestellt, dass weiß, wie man Objekte vergleichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie implementieren
isEqual:
(und auchhash
) auf MyObject so, dass, wenn zwei Objekte "match", dann gibt es JA. Dann der Satz Schnittpunkt code sollte automatisch funktionieren.Hier eine quick-and-dirty-Beispiel aus der Dokumentation. Schauen Sie sich auch diese Frage ALSO.