我想通过指定范围来查询 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/

10-13 08:07