如何比较NSPredicate中的两个NSNumber或一个NSNumber和一个整数?

我试过:

NSNumber *stdUserNumber = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"standardUser"]];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"userID == %@", stdUserNumber];

这不管用...有人知道怎么做吗?

推荐答案

NSNumber是一种对象类型.与NSString不同,当与%@格式一起使用时,NSNumber的实际值不会被取代.必须使用预定义的方法获取实际值,比如返回整数值的intValue.使用格式替换符%d,我们将替换一个整数值.

谓词应该是,

predicateWithFormat:@"userID == %d", [stdUserNumber intValue]];

Objective-c相关问答推荐

Objective-c 点表示法或方括号表示法中首选什么?

NSBundle pathForResource 为 NULL

将 NSNumber 转换为 NSDecimalNumber

xcode 未知类型名称

从 NSString 创建 SHA1 哈希

iOS - 应用程序关闭时的核心位置和地理围栏

动态转发: suppress Incomplete Implementation 警告

从我在 iPhone 上的应用程序调用官方 *Settings* 应用程序

Xcode:可以为协议接口所需的方法自动创建存根吗?

如何将 .plist 文件中的数据 struct 读入 NSArray

'supportedInterfaceOrientations' 实现中的返回类型冲突: - 警告

替换 URL 中出现的空格

立即检测 iOS 方向变化

如何查看 NSError?

如何在 Cocoa 中获取当前日期

NSNumber 和 NSInteger 有什么区别?

performFetchWithCompletionHandler 永远不会被解雇

Xcode 的不完整实现警告

带有 UIImage 的 UIBarButtonItem 始终着色 iOS 7

如何定义 UIColor 的常量值?