0

有什么方法可以跳过处理 NSNumber 并直接使用 NSInteger 吗?

4

2 回答 2

3

Core Data 将只允许 NSNumbers。但是,您可以编写自定义 getter 和 setter 来使用 NSInteger 属性。mogenerator是一个非常棒的工具,它可以自动为您执行此操作:它为您的所有实体生成具有本机属性的类。

于 2011-08-12T18:56:56.960 回答
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允许将原始类型( 、 等)封装intfloat一个对象中,然后可以将其存储到属性列表和核心数据中。

例子:

float pi = 3.1415;
NSNumber *piNumber = [NSNumber numberWithFloat:pi];

然后,您可以轻松访问和/或转换存储到NSNumber对象中的值:

int piAsInteger = [piNumber intValue];
于 2011-08-12T18:56:12.777 回答