如何为核心数据中保存整数值的字符串属性设置谓词,以获取整数中的中间值。 我正在使用复合谓词表示多个条件,然后是一段代码。
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之间获取所有评级。如何在不将属性类型更改为数字的情况下实现此目的。
任何帮助表示赞赏。谢谢
答案 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。