4

我想通过指定范围来查询 sqllite 表。所以这就像给我所有 id 列在 3000 和 3010 之间的记录。

我尝试了 Apple 推荐的方法,但没有奏效。这是我尝试过但失败的方法。

NSPredicate *betweenPredicate =
[NSPredicate predicateWithFormat: @"attributeName BETWEEN %@", @[@1, @10]];

我有 2 个字符串,称为 start 和 end。我将 Apple 的示例更新如下。

NSPredicate *betweenPredicate =
[NSPredicate predicateWithFormat: @"%@ BETWEEN %@", columnName, @[start,end]];

当我使用上述谓词执行FetchRequest 时,即使表中有与谓词匹配的记录,我也会得到 0 条记录。有人能指出我哪里出错了吗?

4

1 回答 1

9

您必须%K对属性名称使用格式说明符:

[NSPredicate predicateWithFormat: @"%K BETWEEN %@", columnName, @[start,end]];

如果这不起作用(我从未对 Core Data 获取请求使用“BETWEEN”),你可以用等效的谓词替换它

[NSPredicate predicateWithFormat: @"%K >= %@ AND %K <= %@",
         columnName, start, columnName, end];
于 2013-08-02T15:17:26.653 回答