NSPredicate NSManagedObject的NSNumber属性

时间:2013-01-09 17:33:09

标签: objective-c core-data ios6 nspredicate

我的NSNumber * year属性为NSManagedObject,数据模型中的类型为Integer 16

今年我尝试与NSPredicate核对,但找不到合适的。

我尝试了什么:

NSPredicate *p = nil;
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
NSNumber *yearNo = [nf numberFromString:term];
if (yearNo) {
    p = [NSPredicate predicateWithFormat:@"(cars.year == %i)", yearNo.intValue];
}

我也尝试过:

NSPredicate *p = nil;
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
NSNumber *yearNo = [nf numberFromString:term];
if (yearNo) {
    p = [NSPredicate predicateWithFormat:@"(cars.year == %@)", yearNo];
}

在这两种情况下,app崩溃。

2 个答案:

答案 0 :(得分:12)

如果您提供有关模型的更多详细信息,我们可以为您提供帮助。

但我认为问题归因于cars。如果cars为多个,则需要为此

设置修饰符
[NSPredicate predicateWithFormat:@"ANY cars.year == %@", yearNo];

答案 1 :(得分:8)

正如@flexaddicted已经说过,你没有提供足够的信息,例如获取请求的实体。

如果要获取具有给定Car的{​​{1}}个对象,谓词就是

year