我想通过指定范围来查询 sqllite 表。所以这就像给我 id 列在 3000 和 3010 之间的所有记录。
我尝试了 Apple 推荐的方法,但没有奏效。这是我尝试过但失败的方法。
NSPredicate *betweenPredicate =
[NSPredicate predicateWithFormat: @"attributeName BETWEEN %@", @[@1, @10]];
我有 2 个字符串,称为开始和结束。我更新了 Apple 的示例如下。
NSPredicate *betweenPredicate =
[NSPredicate predicateWithFormat: @"%@ BETWEEN %@", columnName, @[start,end]];
当我使用上述谓词 executeFetchRequest 时,即使表中有与谓词匹配的记录,我也会得到 0 条记录。有人可以指出我哪里出错了吗?
最佳答案
您必须对属性名称使用 %K
格式说明符:
[NSPredicate predicateWithFormat: @"%K BETWEEN %@", columnName, @[start,end]];
如果这不起作用(我从未对核心数据获取请求使用“BETWEEN”),您
可以用等价的谓词代替它
[NSPredicate predicateWithFormat: @"%K >= %@ AND %K <= %@",
columnName, start, columnName, end];
关于ios - 如何在Objective C中使用NSPredicate指定范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18020234/