如何以插入的顺序获取NSManagedObjects?

时间:2015-08-18 13:39:04

标签: ios core-data nsdate auto-increment nsmanagedobject

我要求本地创建的事件必须同步与服务器同步。为了简单解释这一点,我们可以考虑这种情况,在离线应用程序中发生了两个事件,称为A和B,其中A> B.在这种情况下,B只应在A完成同步时才同步。

要解决这个问题,我必须在我的实体中有一个额外的属性来识别之前创建的属性。此属性可以维护创建的时间或任何增量数。

这里只有我面临一些澄清

解决方案:1 根据创建的时间

如果我在该属性中保留创建的时间,那么它是否适用于以下场景

假设我今天在事件“A”上创建了然后我将设备的日期更改为前一天的日期,然后我回到我的应用程序并创建另一个事件“B”。哪一个会更早?如果应用程序说“B”是最近插入的对象,那么没有问题我可以坚持使用此解决方案本身,否则我需要转移到其他解决方案。是否有通过维持创建时间来查找插入订单的优化解决方案?

解决方案:2 基于增量编号

我认为核心数据不提供任何自动增量ID,因此我们需要手动维护它。如果是这样,那么维持最大指定值的更好方法是什么?如果我在NSUserDefaults中存储最大分配值会不会很好?每当app创建一个事件时,将从NSUserDefaults获取值,并且将添加+1,然后我将为事件分配最终值。这种方法是正确的吗?如果你知道更好的解决方案,请指导我

1 个答案:

答案 0 :(得分:1)

Core Data中没有内置自动递增数字,因为它更像是一个特定于业务逻辑的项目。但是,实施并不困难。

您可以存储持久性存储的元数据中使用的最后一个数字。在插入过程中,只需增加该数字,然后将其添加到每个实体中。完成插入后,请更新元数据中的数字。

这就是Core Data如何为objectID更新自己的插入号码。

相关问题