有什么方法可以跳过处理NSNumber并直接使用NSInteger吗?
答案 0 :(得分:3)
核心数据只允许使用NSNumbers。但是,您可以编写自定义getter和setter以使用NSInteger属性。 mogenerator是一个很棒的工具,可以自动为您执行此操作:它为您的所有实体生成具有本机属性的类。
答案 1 :(得分:2)
没有。 NSInteger
只是一个长整数的typedef,而不是一个对象。
实际实施:
#if __LP64__ || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
NSNumber
类允许将基本类型(int
,float
等)封装到对象中,然后可以将其存储到属性列表和核心数据中。
示例:
float pi = 3.1415;
NSNumber *piNumber = [NSNumber numberWithFloat:pi];
然后,您可以轻松访问和/或转换存储在NSNumber
对象中的值:
int piAsInteger = [piNumber intValue];