CoreData:基于关系的NSPredicate

时间:2012-11-29 19:19:52

标签: core-data nspredicate

我正在使用核心数据制作食谱书。这是我第一次使用CoreData并且它到目前为止工作,但我在iPad的分割视图中使用它时遇到了一些麻烦。

这是我的对象模型: http://i621.photobucket.com/albums/tt295/Naosu_FFXI/ObjectModel.png

在我的应用程序中,步骤和成分显示在详细视图中的两个表中。当我有一个食谱时,它按预期工作。但是,无论您选择哪种配方,两个表的NSFetchedResultsControllers都会提取所有信息。所以使用NSPredicate似乎是最明显的选择。

以下是我对NSPredicate的代码段:

filteredIngredientsArray = [[NSMutableArray alloc] init];
.... snip ....

//---------- Filtering the ingredients by name ----------
NSError *error = nil;
NSPredicate *ingredientsPredicate = [NSPredicate predicateWithFormat:@"recipe.recipeName == '%@'", selectedName];
[fetchRequest setPredicate:ingredientsPredicate];
NSLog(@"Filtering the INGREDIENTS with this: %@", selectedName);

NSArray *loadedIngredients = [_managedObjectContext executeFetchRequest:fetchRequest error:&error];
filteredIngredientsArray = [[NSMutableArray alloc] initWithArray:loadedIngredients];

[self.ingredientTable reloadData];

当我使用它时,我的表格不会被填充期间....所以它确实有效,但不能按我的意愿工作。我的NSLog显示selectedName变量的值是用户点击的配方的名称。

这一直让我感到困扰,这真让我烦恼,所以任何反馈/帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

以谓词格式删除%@周围的单引号:

[NSPredicate predicateWithFormat:@"recipe.recipeName == %@", selectedName]