【发布时间】:2019-03-02 18:34:14
【问题描述】:
我希望创建一个谓词来检查 Core Data 关系中前 5 个对象的 TypeID。
这是我正在尝试的,但它不起作用:
int num = 5;
NSMutableArray *predicates = [[NSMutableArray alloc] init];
for (int i = 0; i < num; i++) {
[predicates addObject:[NSPredicate predicateWithFormat:@"SELF IN %@ AND logs[%i].TypeID == 3", items, i]];
}
这给出了错误:
错误:SQLCore dispatchRequest:异常处理请求: , 不支持的函数 表达式 logs[0].TypeID 与(null)CoreData 的 userInfo: 错误:SQLCore dispatchRequest:异常处理请求: , 不支持的函数 表达式 logs[0].TypeID with userInfo of (null)
我意识到我可能做错了,那么有没有其他方法可以使用 NSPredicate 来做到这一点?
【问题讨论】:
-
什么是日志?您的对象有属性日志?
-
关系类型通常是无序的
Set。所以 前 5 个对象 可以不同。您需要应用 one 谓词来对集合进行排序并过滤对象。 -
@E.Coms 是的。 Logs 是
SELF对象的关系。 -
@vadian 是的,它是
Set。谓词如何同时排序和过滤? -
您可以使用
NSSortDescriptor对获取结果进行排序,然后进行过滤。或者你可以在你的核心数据模型中添加一个排序索引,并在你的谓词中使用它。
标签: ios objective-c core-data nspredicate