Core Data NSPredicate für Beziehungen
Mein Objekt-graph ist einfach.
Habe ich eine feedentry-Objekt speichert Informationen über RSS-feeds und eine Beziehung namens-Tag links zu "TagValues" - Objekt. Sowohl die relation (und Umgekehrt) sind zu viele. ich.e, a feed können mehrere tags und eine tag-können verbunden werden, um mehrere feeds.
Bezog ich mich auf Wie zu tun, Kern-Daten-Abfragen über eine Beziehung? und erstellt ein NSFetchRequest. Aber beim abrufen von Daten, bekomme ich eine exception, die besagt,
NSInvalidArgumentException
implementierte SQL-Generierung für das Prädikat
Was soll ich tun? Ich bin ein Neuling auf Kern-Daten 🙁 ich weiß, ich habe etwas getan, was furchtbar falsch... Bitte um Hilfe...
Dank
--
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
//Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"FeedEntry" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
//Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"authorname" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSEntityDescription *tagEntity = [NSEntityDescription entityForName:@"TagValues" inManagedObjectContext:self.managedObjectContext];
NSPredicate *tagPredicate = [NSPredicate predicateWithFormat:@"tagName LIKE[c] 'nyt'"];
NSFetchRequest *tagRequest = [[NSFetchRequest alloc] init];
[tagRequest setEntity:tagEntity];
[tagRequest setPredicate:tagPredicate];
NSError *error = nil;
NSArray* predicates = [self.managedObjectContext executeFetchRequest:tagRequest error:&error];
TagValues *tv = (TagValues*) [predicates objectAtIndex:0];
NSLog(tv.tagName); //it is nyt here...
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tag IN %@", predicates];
[fetchRequest setPredicate:predicate];
//Edit the section name key path and cache name if appropriate.
//nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
--
Mungunth, es sieht aus wie Sie möglicherweise vergessen um die Person des fetchRequest nach der neu-Einstellung die das Prädikat 'tag IN Prädikaten'. Wenn das nicht das Thema, bitte poste auch ein Bild von dem Objekt-Modell, und ich kann Ihnen ein wenig mehr Anleitung.
Mugunth> sollten Sie Ihre Lösung als Antwort und akzeptieren es.
Ich bekam die Antwort durch devforums.apple.com. Bis die NDA ist, kann ich nicht verraten, ist die Antwort... 🙁
InformationsquelleAutor Mugunth | 2009-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Schlüssel hier ist "JEDER"
Beispiel von apple:
http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CoreData/Articles/cdBindings.html
InformationsquelleAutor respectTheCode
Benötigen Sie SQLite? Bin ich zu kämpfen mit einem ähnlichen Problem, und habe festgestellt, dass alles funktioniert wie erwartet mit binären speichern.
Gibt es Einschränkungen bei der Verwendung von SQLite als Speicher, obwohl ich noch nicht gefunden, ein Dokument, die eine Liste der Einschränkungen, nur, dass Sie existieren.
Leider kann ich nicht mehr helfen.
Ich foudn die Antwort, aber... NSPredicate *predicate = [NSPredicate predicateWithFormat:@tag"IN %@", Prädikate]; [fetchRequest setPredicate:Prädikat]; sollte geändert werden, um NSPredicate *predicate = [NSPredicate predicateWithFormat:@"JEDER tag IN %@", Prädikate]; [fetchRequest setPredicate:Prädikat];
Gut zu wissen - es ist seltsam, deine Nachricht ist sehr ähnlich zu einem ich hatte, doch mir wird durch eine Einschränkung der Core-Daten mit SQLite. Wissen, um herauszufinden, wie zu sagen, der Unterschied!
InformationsquelleAutor emp