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

上一篇: NSPredicate compare with Integer

下一篇: why wont this NSPredicate work?