Mon graphique d'objet est simple.Données de base NSPredicate pour les relations
J'ai un objet feedentry qui stocke des informations sur les flux RSS et une relation appelée Tag qui lie à l'objet "TagValues". Les deux la relation (to et inverse) sont to-many. c'est-à-dire qu'un flux peut avoir plusieurs étiquettes et qu'une étiquette peut être associée à plusieurs flux.
J'ai fait référence à How to do Core Data queries through a relationship? et j'ai créé une requête NSFetchRequest. Mais quand récupérer les données, je reçois une exception indiquant,
NSInvalidArgumentException inappliquées génération SQL pour prédicat
Que dois-je faire? Je suis un débutant aux données de base :(Je sais que je l'ai fait quelque chose de terriblement mal ... S'il vous plaît aider ...
Merci
-
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;
-
après une partie de votre code afin que nous puissions avoir un meilleur look – catsby
Mungunth, il semblerait que vous oubliez de définir l'entité du fetchRequest après avoir redéfini le prédicat sur 'tag IN predicates'. Si ce n'est pas le problème, s'il vous plaît également poster une photo du modèle d'objet et je peux vous donner un peu plus de conseils. –
Mugunth> Vous devez ajouter votre solution en guise de réponse et l'accepter. – U62