ceci est mon modèle de données de base:iPhone CoreData joindre
J'essaie d'obtenir tous LanguageEntries à partir d'une base de données pour une category.categoryName et languageset.languageSetName par exemple donné
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"LanguageEntry" inManagedObjectContext:del.managedObjectContext];
[fetchRequest setEntity:entity];
NSString* predicateString = [NSString stringWithFormat:@"Category.categoryName = %@ AND LanguageSet.languageSetName = %@",
@"Food", @"English####Spanish"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:predicateString];
NSError *error = nil;
NSArray* objects = [del.managedObjectContext executeFetchRequest:fetchRequest error:&error];
Ceci retourne toujours 0 objets. Si je mets la chaîne de prédicat à correspondre sur une relation (par exemple, Category.categoryName = Food ou languageSet.languageSetName = English #### Spanish), elle renvoie des données.
Ceci est déconcertant, quelqu'un peut-il faire la lumière?
-> Ken
Pour l'éditeur de prédicat (dans ce cas) devrais-je sélectionner "LanguageEntry" comme destination? – Ken
Désolé, j'aurais dû dire "ajouter une requête de recherche". Cela vous permet de construire n'importe quel prédicat que vous voulez. Vous pouvez également enregistrer la requête d'extraction dans le modèle lui-même afin de ne pas avoir à le créer manuellement. Cela perd cependant son avantage quand vous devez utiliser des variables. – TechZen
single = est très bien à utiliser dans un prédicat, ce n'est pas le problème ici. – malhal