如何在Objective C中使用NSPredicate指定范围
我想通过指定一个范围来查询sqllite表。 所以就像给我所有logging的列号在3000到3010之间。
我尝试了苹果的build议,但没有奏效。 这是我尝试和失败。
NSPredicate *betweenPredicate = [NSPredicate predicateWithFormat: @"attributeName BETWEEN %@", @[@1, @10]];
我有2个string叫做开始和结束。 我更新了苹果的例子如下。
NSPredicate *betweenPredicate = [NSPredicate predicateWithFormat: @"%@ BETWEEN %@", columnName, @[start,end]];
当我用上面的谓词executeFetchRequest时,即使表中有匹配谓词的logging,我也会得到0条logging。 有人能指出我出错的地方吗?
您必须为属性名称使用%K
格式说明符:
[NSPredicate predicateWithFormat: @"%K BETWEEN %@", columnName, @[start,end]];
如果这不起作用(我从来没有使用“BETWEEN”获取核心数据获取请求),那么可以用等价的谓词来replace它
[NSPredicate predicateWithFormat: @"%K >= %@ AND %K <= %@", columnName, start, columnName, end];