È possibile utilizzare solo una relazione to-many in un back-end SQL. Questo lo farà, ma devi aggiungere il "back-link" in un set ordinato (per mantenere l'ordine se usi l'ordinamento - e l'unicità perché potresti avere più sottocategorie che tornano alla stessa categoria). Non ideale, ma non male, considerando i limiti.
// 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
Purtroppo, non credo che questo è possibile con il negozio SQL. Innanzitutto, vorrei sottolineare che non sono affatto vicino a un esperto di SQL e di solito cerco di progettare i miei archivi CoreData in modo che questi tipi di query non siano necessari. Tuttavia, la seguente SUBQUERY funziona con un archivio InMemory, quindi è una sottoquery in qualche modo correttamente formattata.
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(subcategories, $s, [email protected] > 0)[email protected] > 0"];
Tuttavia, tale predicato restituisce un errore quando si utilizza un archivio SQL. I documenti dicono che ci sono un buon numero di limitazioni quando si utilizzano i predicati con gli archivi SQL, quindi non sono né sorpreso né propenso a dedicare molto più tempo alla ricerca di questo.
Keypath contenente aggregato KVC dove non dovrebbe esserlo; fallito per gestire $ s.items. @ contano
fonte
2012-04-14 14:58:02
Utilizzare più NSPredicates tramite NSCompoundPredicate. https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pCreating.html –
'items' probabilmente è un set, prova a usare' @ count' –