将NSInteger存储在核心数据中

时间:2011-08-12 18:41:32

标签: xcode core-data nsnumber nsinteger

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

2 个答案:

答案 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类允许将基本类型(intfloat等)封装到对象中,然后可以将其存储到属性列表和核心数据中。

示例:

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

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

int piAsInteger = [piNumber intValue];