NSPredicate与Integer比较
如何比较NSPredicate中的两个NSNumber或NSNumber和Integer?
我试过了:
NSNumber *stdUserNumber = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"standardUser"]];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"userID == %@", stdUserNumber];
那么,这不起作用...任何人都有一个想法如何做到这一点? 我相信这很容易,但我无法找到任何东西......
NSNumber
是一个对象类型。 与NSString
不同,当与%@
格式一起使用时,NSNumber的实际值不会被替代。 您必须使用预定义的方法获取实际值,例如返回整数值的intValue
。 并使用格式替代者作为%d
因为我们将替换整数值。
谓词应该是,
predicateWithFormat:@"userID == %d", [stdUserNumber intValue]];
如果你正在使用predicateWithSubstitutionVariables:并且你想要判断的值是带有整数值的NSNumber,那么你需要在谓词中使用NSNumber而不是NSString作为替代值。 看看例子:
NSPredicate *genrePredicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"genreID == $GENRE_ID"]]; //if we make only one NSPredicate if would look something like this: [NSPredicate predicateWithFormat:@"genreID == %d", [someString integerValue]];
NSPredicate *localPredicate = nil;
for(NSDictionary *genre in genresArray){
localPredicate = [genrePredicate predicateWithSubstitutionVariables:@{@"GENRE_ID" : [NSNumber numberWithInteger:[genre[@"genre_id"] integerValue]]}];
}
链接地址: http://www.djcxy.com/p/60631.html