NSPredicate与Integer进行比较

wol*_*evo 36 core-data nspredicate ios

如何比较NSPredicate中的两个NSNumber或NSNumber和Integer?

我试过了:

NSNumber *stdUserNumber = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"standardUser"]];
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"userID == %@", stdUserNumber];
Run Code Online (Sandbox Code Playgroud)

嗯,这不起作用......任何人都知道如何做到这一点?我确定它很简单,但我找不到任何东西......

Emp*_*ack 91

NSNumber是一种对象类型.与之不同NSString,NSNumber的实际值在与%@格式一起使用时不会替代.您必须使用预定义的方法获取实际值,例如intValue返回整数值.并使用格式替换器,%d因为我们将替换整数值.

谓词应该是,

predicateWithFormat:@"userID == %d", [stdUserNumber intValue]];
Run Code Online (Sandbox Code Playgroud)

  • ……这应该没什么区别。谓词格式解析器将看到格式字符串中的 `%d`,从 `va_list` 中弹出一个 `int`,然后将其装入一个 `NSNumber`。 (2认同)
  • 以下是所有格式说明符的列表:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html (2认同)