【发布时间】:2015-07-14 14:51:37
【问题描述】:
我有一个包含 Task 和 List 的 Core Data 模型,其中 List 与 Task 具有一对多有序关系,而 Task 与 List 具有反向多对多关系。我需要以正确的顺序从给定的列表中检索任务,但经过过滤以匹配谓词。例如,如果priority 是 Task 上的一个字段,
NSPredicate* predicate = [NSPredicate predicateWithString:@"priority == HIGH"]
List* list; // already fetched
我可以通过
NSArray* allTasks = list.tasks;
NSArray* someTasks = [allTasks filteredArrayUsingPredicate:predicate];
但这需要将所有任务拉入内存。我可以直接获取任务
NSFetchRequest* req = [[NSFetchRequest alloc] initWithEntityName:@"Task"];
[req setPredicate:[NSPredicate predicateWithFormat:@"list == %@ AND priority == HIGH", list]];
NSArray* someTasks = [context executeFetchRequest:req error:&error];
但是任务顺序没有保留。
有没有办法通过谓词过滤关系错误?
【问题讨论】:
标签: ios core-data many-to-many nspredicate nsfetchrequest