【发布时间】:2015-06-11 07:00:27
【问题描述】:
我是 iOS 开发新手,并且一直在我正在开发的应用程序中使用核心数据。我有一个时间戳值,它作为属性存储在我的 NSManagedObject 中,并且该属性在核心数据模型中声明为 Integer-64 位。它在 NSManagedObject 子类中声明为 NSNumber。
当我在我的 iPhone 6 和 iOS 8 上运行它时,代码运行良好,并且时间戳按预期存储。但是,当我在装有 iOS 7 的 iPhone 4 上运行相同的代码时,数字会发生变化。我不确定为什么会发生这种情况,因为核心数据模型相同并将属性声明为 Integer-64。
当我创建这个 NSManaged 对象并填充时间戳属性时,我使用
[NSNumber numberWithUnsignedInteger: timeStampValue]
然后我保存上下文。但是当我获取对象并读取值时,我的 iPhone 4/iOS7 上的值会发生变化。我不确定这是 iPhone 4 还是 iOS7 问题,因为我没有其他设备来测试它。它在模拟器上也可以正常工作。
如果有人能告诉我为什么会发生这种情况以及我能做些什么来解决它,我将不胜感激。
如果需要更多信息,我会提供。
【问题讨论】:
-
我没有给你一个明确的答案,但我怀疑这是 Core Data 在较小的 iOS 设备上节省空间的方式。几个条目不会有太大区别,但是如果您在数据库中有 500000 个实体,那么您将节省大量空间。在解决方案方面,你为什么不使用 NSDate?
-
@RASS,这就是我最终解决当前问题的方法。但我还是想知道如何解决其他大整数,以防万一以后再遇到。
-
@RASS,我发现了错误。有兴趣的可以看我贴的答案。
标签: ios objective-c iphone core-data