Ios 核心数据更改64位整数的值

Ios 核心数据更改64位整数的值,ios,objective-c,iphone,core-data,Ios,Objective C,Iphone,Core Data,我是iOS开发新手,一直在开发的应用程序中使用核心数据。我有一个时间戳值,它作为属性存储在我的NSManagedObject中,该属性在核心数据模型中声明为整数-64位。它在NSManagedObject子类中声明为NSNumber 当我在iphone6和ios8上运行这个程序时,代码工作正常,时间戳按预期存储。然而,当我在装有iOS 7的iPhone4上运行相同的代码时,号码就改变了。我不确定为什么会发生这种情况,因为核心数据模型是相同的,并且将属性声明为整数-64 当我创建这个NSManag

我是iOS开发新手,一直在开发的应用程序中使用核心数据。我有一个时间戳值,它作为属性存储在我的NSManagedObject中,该属性在核心数据模型中声明为整数-64位。它在NSManagedObject子类中声明为NSNumber

当我在iphone6和ios8上运行这个程序时,代码工作正常,时间戳按预期存储。然而,当我在装有iOS 7的iPhone4上运行相同的代码时,号码就改变了。我不确定为什么会发生这种情况,因为核心数据模型是相同的,并且将属性声明为整数-64

当我创建这个NSManaged对象并填充timestamp属性时,我使用

[NSNumber numberWithUnsignedInteger: timeStampValue]
然后保存上下文。但是当我获取对象并读取值时,我的iphone4/iOS7上的值会发生变化。我不确定这是iPhone4还是iOS7的问题,因为我没有其他设备来测试。它在模拟器上也可以正常工作

如果有人能告诉我为什么会发生这种情况,以及我能做些什么来修复它,我将不胜感激


如果需要更多的信息,我会提供的

给将来可能有此问题的任何人。我找到了解决办法。这是iPhone4的一个问题

问题不在于核心数据或64位整数设置。错误的出现是由于objective-c的长度太长。这就是我从服务器检索初始时间戳值的方式,我将其存储为长时间。我假设long是64位(就像在Java中一样)

在iphone6上,long实际上是64位,因此其值没有改变。
然而,在iPhone4上,long的大小是32位,而对于大的数字,该值已损坏。将存储变量更改为long long解决了这个问题

我没有确切的答案,但我怀疑这是核心数据在较小的iOS设备上节省空间的方式。对于一些条目来说,这不会有太大的区别,但是如果数据库中有500000个实体,那么就节省了相当多的空间。就解决方案而言,您为什么不使用NSDate?@RASS,这就是我最终解决当前问题的方法。但我仍然想知道如何解决其他大整数的问题,以防将来再次遇到它。@RASS,我发现了错误。如果你感兴趣,你可以看到我发布的答案。我也面临着同样的问题。将长整数编号(如8316424477520953000)保存为整数64时会产生问题。在获取不更改的时间。你能举个例子吗?我也有同样的问题,你怎么把它改成long-long,我们在核心数据中没有这样的类型?