如何使用核心数据Integer 64属性?

Sal*_*rtz 5 cocoa-touch properties core-data nsnumber ios

我希望Core Data中的Entity属性是64位整数.由于该模型将在iOS上运行,并且据我所知这些设备不是64位,我认为这NSNumber是要走的路(核心数据为您提供了对象的选项或基本类型的标量属性).我假设NSNumber将在内部负责跟踪64位的合适表示.

现在,我需要在某个时刻从我的实体中的这个"64位"属性中减去1(如果您没有猜到,64位属性是Twitter API中的max_id参数),但为此,我首先需要取消打包NSNumber属性中的数字.

我应该得到intValue吗?的longValue?unsignedIntValue?unsignedLongValue?好久不见?哪一个?

lna*_*ger 8

由于您已经知道类型(64位整数),因此无需检查它.

要从NSNumber中获取64位整数,请执行以下操作之一:

NSInteger myInteger = [myNSNumber integerValue];
int64_t   myInteger = [myNSNumber integerValue];
Run Code Online (Sandbox Code Playgroud)

为了只添加一个,你可以使用这样的东西:

myNSNumber = [NSNumber numberWithInteger:[myNSNumber integerValue]+1]];
Run Code Online (Sandbox Code Playgroud)

请注意,iOS 确实有64位数据类型,如int64_tNSInteger.

编辑:
如果您使用的唯一原因NSNumber是存储64位整数,您可以在模型子类中声明这样的属性并完全跳过取消装箱/装箱:

@property (nonatomic) int64_t myIntValue;
Run Code Online (Sandbox Code Playgroud)

请注意,如果为" 创建NSManagedObject子类"功能选择" 使用基本数据类型的标量属性"选项,则核心数据将默认执行此操作.