Bạn chỉ có thể sử dụng mối quan hệ một-nhiều trong phần phụ trợ SQL. Điều này sẽ làm điều đó, nhưng bạn phải thêm "back-link" vào một bộ theo thứ tự (để giữ trật tự nếu bạn sử dụng phân loại - và tính duy nhất bởi vì bạn có thể nhận được nhiều tiểu thể loại quay trở lại cùng một thể loại). Không lý tưởng, nhưng không tệ, xem xét những hạn chế.
// Search for all subcategories with item count > 0
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Subcategory"];
request.predicate = [NSPredicate predicateWithFormat:@"[email protected] > 0"];
NSError *error = nil;
// They should have an inverse relationship to their category...
// We have to iterate and insert them in to a set, but there is no additional
// disk access.
NSMutableOrderedSet *results = [NSMutableOrderedSet orderedSet];
[[self.projectDatabase.managedObjectContext executeFetchRequest:request error:&error] enumerateObjectsUsingBlock:^(Subcategory *obj, NSUInteger idx, BOOL *stop) {
[results addObject:obj.category];
}];
EDIT
Thật không may, tôi không nghĩ rằng đây là có thể với các cửa hàng SQL. Đầu tiên, hãy để tôi nhấn mạnh rằng tôi không ở gần một chuyên gia SQL nào, và tôi thường cố gắng thiết kế các cửa hàng CoreData của mình để các loại truy vấn này không cần thiết. Tuy nhiên, SUBQUERY sau hoạt động với một cửa hàng InMemory, do đó, nó là một truy vấn con được định dạng đúng cách.
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(subcategories, $s, [email protected] > 0)[email protected] > 0"];
Tuy nhiên, vị từ đó có lỗi khi sử dụng cửa hàng SQL. Các tài liệu nói rằng có một số lượng hợp lý các giới hạn khi sử dụng các vị từ với các cửa hàng SQL, vì vậy tôi không ngạc nhiên, cũng không nghiêng quá nhiều thời gian nghiên cứu này.
Đường chạy có chứa KVC tổng hợp nơi không nên có; thất bại để xử lý $ s.items. @ đếm
Nguồn
2012-04-14 14:58:02
Sử dụng nhiều NSPredicates qua NSCompoundPredicate. https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pCreating.html –
'mục' có thể là một tập hợp, thử sử dụng' @ count' –