Sie können in einem SQL-Backend nur eine einzige Beziehung verwenden. Dies wird es tun, aber Sie müssen den "Back-Link" in eine geordnete Menge hinzufügen (um die Reihenfolge zu erhalten, wenn Sie Sortierung verwenden - und Eindeutigkeit, weil Sie mehrere Unterkategorien erhalten können, die auf die gleiche Kategorie zurückführen). Nicht ideal, aber nicht schlecht, wenn man die Einschränkungen berücksichtigt.
// 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
Leider habe ich glaube nicht, das mit dem SQL-Speicher möglich ist. Zunächst möchte ich betonen, dass ich nirgendwo in der Nähe eines SQL-Experten bin, und ich versuche normalerweise, meine CoreData-Speicher so zu gestalten, dass diese Art von Abfragen nicht notwendig sind. Die folgende SUBQUERY funktioniert jedoch mit einem InMemory-Speicher, also handelt es sich um eine etwas korrekt formatierte Unterabfrage.
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(subcategories, $s, [email protected] > 0)[email protected] > 0"];
Dieses Prädikat gibt jedoch einen Fehler bei der Verwendung eines SQL-Speichers. Die Dokumente geben an, dass es bei der Verwendung von Prädikaten mit SQL-Speichern eine Reihe von Einschränkungen gibt. Daher bin ich weder überrascht noch geneigt, zu viel Zeit damit zu verbringen, dies zu erforschen.
Keypath mit KVC-Aggregat, wo es keines geben sollte; fehlgeschlagen $ s.items zu handhaben. @
Verwenden Sie mehrere NSPredicates über NSCompoundPredicate. https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pCreating.html –
'Artikel' ist wahrscheinlich ein Satz, versuchen Sie' @ count' –