Meine Objektgrafik ist einfach.Core Data NSPredate für Beziehungen
Ich habe ein feedentry Objekt, das Informationen über RSS-Feeds und eine Beziehung namens Tag speichert, die mit "TagValues" -Objekt verknüpft. Beide Relationen (zu und umgekehrt) sind zu viele. ein Feed kann mehrere Tags haben und ein Tag kann mehreren Feeds zugeordnet sein.
Ich bezog mich auf How to do Core Data queries through a relationship? und erstellte einen NSFetchRequest. Aber wenn die Daten holen, bekomme ich eine Ausnahme besagt,
NSInvalidArgumentException unimplemented SQL-Generierung für Prädikat
Was soll ich tun? Ich bin ein Neuling auf Kerndaten :(Ich weiß, ich habe etwas schrecklich falsch gemacht ... Bitte helfen ...
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;
-
Post einige Code, so dass wir einen besseren Blick – catsby
Mungunth haben kann, sieht es aus wie Sie können Vergessen Sie nicht, die Entity von fetchRequest zu setzen, nachdem Sie das Prädikat auf "IN-Prädikate anpassen" gesetzt haben. Wenn dies nicht der Fall ist, posten Sie bitte auch ein Bild des Objektmodells und ich kann Ihnen ein bisschen mehr Orientierung geben. –
Mugunth> Sie sollten Ihre Lösung als Antwort hinzufügen und akzeptieren. – U62