Hãy xem keypaths. Chúng rất mạnh và tôi sử dụng chúng thay vì các lớp học NSPredicate hầu hết thời gian. Đây là cách bạn sẽ sử dụng chúng trong ví dụ của bạn ...
NSArray *uniqueStates;
uniqueStates = [customObjects valueForKeyPath:@"@distinctUnionOfObjects.state"];
Lưu ý việc sử dụng valueForKeyPath thay vì valueForKey.
Đây là một/example giả tạo chi tiết hơn ...
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"
Trong khi tôi cũng như sức mạnh của @distinctUnionOfObjects, và do đó, người dùng trả lời probablyCorey tặng, lợi ích với cách tiếp cận ngắn gọn này ở đây trong dung dịch này là thứ tự được giữ nguyên. – idStar