我的核心数据模型中有2个表。
ITEM和FILTER
FILTER有很多项目
我正在尝试使用表FILTER的参数获取所有项目,isSelected == 1.
我有这个谓词,但它没有用,你能帮我解决一下如何得到我想要的东西吗? 我正在使用MagicalRecord
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"filter.isSelected == 1"];
NSArray *items = [Item MR_findAllWithPredicate:predicate];
self.itemList = [items copy];
答案 0 :(得分:2)
试试这个,我在我的应用程序中为Item和Department做同样的事情。
Filter *department=nil;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Filter" inManagedObjectContext:__managedObjectContext];
[fetchRequest setEntity:entity];
Item *anItem=nil;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:__managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isSelected==%d and isSelected==%@", [department.isSelected integerValue ], @"1"];
[fetchRequest setPredicate:predicate];
NSArray *resultSet = [UpdateManager executeForContext:self.managedObjectContext FetchRequest:fetchRequest];
resultSet是结果数组。
试着让我知道。
答案 1 :(得分:2)
您可以先获取isSelected
值为1的所有过滤器。然后遍历每个过滤器并形成项目数组。以下是代码。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isSelected == 1"];
NSArray *filters = [Filter MR_findAllWithPredicate:predicate];
NSMutableArray *items = [NSMutableArray array];
for (Filter *filter in filters)
{
items = [items arrayByAddingObjectsFromArray:filter.items];
}
答案 2 :(得分:0)
我自己修正了错误,现在我知道为什么它给了我一个空数组,当我将它们插入数据库时,我没有为每个创建的ITEM设置FILTER对象: - /这是多么愚蠢的错误。但上述两种反应似乎都有效。两者都+ 1,谢谢