核心数据同步通过扩展insertNewObjectForEntityForName并保存类别?

时间:2014-04-15 15:32:29

标签: rest core-data backend objective-c-category

我在思考如何将核心数据同步到后端。您认为可以使用类别来扩展ie insertNewObjectForEntityForName方法,在添加的逻辑中我可以调用适当的restful webservice来在后端插入记录吗?!

1 个答案:

答案 0 :(得分:0)

不,因为

  • 您无法扩展类别中的现有方法。您可以继承NSEntityDescription来扩展该方法,但这不是一个好主意,因为......
  • 这是错误的同步时间。此方法创建新实例,但不分配任何属性值。因此,除了“存在新对象”之外,您没有要同步的数据。即使您确定在单独的线程上进行网络呼叫,也没有有用的信息要发送。
  • 这无法帮助您将服务器同步到您的应用中。
  • 在许多情况下,应用会创建新对象但不保存它们(例如,如果用户点击“取消”按钮)。如果您使用此方法,则您已经向服务器发送了一个您不想要的新对象。

有许多框架和付费服务可以帮助以某种方式同步核心数据。哪个好(如果有的话)真的取决于你想要完成什么 - 将数据同步到服务器上的用户帐户,或者在多个iOS设备之间同步数据,或者其他什么。

如果您编写自己的同步代码(难以正确),常见的方法是观察NSManagedObjectContextObjectsDidChangeNotificationNSManagedObjectContextDidSaveNotificationNSManagedObjectContextWillSaveNotification,或者不止一个的组合。只要您有外发更改发送到您的服务器,它们就会通知您。使用服务器提供的任何API从服务器导入更改。