Spójrz na keypaths. Są bardzo potężne i używam ich zamiast klas NSPredicate przez większość czasu. Oto jak można wykorzystać je w swoim przykładzie ...
NSArray *uniqueStates;
uniqueStates = [customObjects valueForKeyPath:@"@distinctUnionOfObjects.state"];
Uwaga wykorzystanie valueForKeyPath zamiast valueForKey.
Oto bardziej szczegółowy/wymyślony przykład ...
NSDictionary *arnold = [NSDictionary dictionaryWithObjectsAndKeys:@"arnold", @"name", @"california", @"state", nil];
NSDictionary *jimmy = [NSDictionary dictionaryWithObjectsAndKeys:@"jimmy", @"name", @"new york", @"state", nil];
NSDictionary *henry = [NSDictionary dictionaryWithObjectsAndKeys:@"henry", @"name", @"michigan", @"state", nil];
NSDictionary *woz = [NSDictionary dictionaryWithObjectsAndKeys:@"woz", @"name", @"california", @"state", nil];
NSArray *people = [NSArray arrayWithObjects:arnold, jimmy, henry, woz, nil];
NSLog(@"Unique States:\n %@", [people valueForKeyPath:@"@distinctUnionOfObjects.state"]);
// OUTPUT
// Unique States:
// "california",
// "michigan",
// "new york"
Chociaż lubię też moc @distinctUnionOfObjects, a zatem użytkownik odpowiedzi probablyCorey dał, z korzyścią dla tej zwięzłej podejścia tutaj w tym roztworze czy to zamówienie zostało zachowane. – idStar