如何为核心数据中保存整数值的字符串属性设置谓词

时间:2016-05-05 11:00:30

标签: ios core-data predicate

如何为核心数据中保存整数值的字符串属性设置谓词,以获取整数中的中间值。 我正在使用复合谓词表示多个条件,然后是一段代码。

NSPredicate *categoryPredicate = [NSPredicate predicateWithFormat: @"rating >= %@ AND rating <= %@",ratingFrom.text,ratingTo.text];
[compoundPredicateArray addObject: categoryPredicate ];

&#34;评价&#34;属性在数据库中是字符串类型。我需要得到ratingFrom&amp;的给定范围之间的等级。 ratingTo textfields。

&#34; 1&#34;至&#34; 10&#34;应该在1到10之间获取所有评级。如何在不将属性类型更改为数字的情况下实现此目的。

任何帮助表示赞赏。谢谢

3 个答案:

答案 0 :(得分:0)

我不确认但是试试这个

转换NSString中的值并输入此代码

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"string CONTAINS[c] %@",searchText];

答案 1 :(得分:0)

理想情况下,您应该将此属性更改为数字而不是字符串。但如果不可能,以下内容应强制CoreData(或更确切地说是SQLite)将其视为一个数字:

NSPredicate *categoryPredicate = [NSPredicate predicateWithFormat: @"add:to:(rating,0) >= %d AND add:to:(rating,0) <= %d",ratingFrom.text.intValue,ratingTo.text.intValue];

答案 2 :(得分:-1)

你可以试试BETWEEN表达式:

  

BETWEEN左手表达式介于或等于任何一个,   右侧指定的值。右边是一个   给出上部的两个值数组(指定顺序需要一个数组)   和下限。例如,1 BETWEEN {0,33}或$ INPUT BETWEEN   {$ LOWER,$ UPPER}。在Objective-C中,您可以创建BETWEEN   谓词如下例所示:

所以你的代码应该是这样的:

NSPredicate *betweenPredicate =
    [NSPredicate predicateWithFormat: @"rating BETWEEN %@", @[ratingFrom, ratingTo]];

ratingFrom,ratingTo应为NSNumber实例,如果评级为NSNumber。