如何将核心数据用于离线(源核心数据) - 在线(服务器数据)模式

时间:2014-12-10 13:38:14

标签: ios objective-c core-data nsmanagedobject offlineapps

我正在开发适用于离线和在线的iOS应用。 该应用程序的设计使得应用程序的功能将根据订阅类型(如Basic和Premium)推迟 基本用户只能在在线模式下使用该应用,而高级用户则可以在线和离线模式下使用该应用。

当在线模式下使用该应用程序时,将调用Web服务并解析响应数据,并将其存储在NSObject类(业务对象)的对象中。此NSObject用于将数据绑定到相应的视图控制器。对于在线模式下使用该应用的基本和高级用户,此功能相同。但除了Premium用户的这项功能外,我们还将从服务器获取的数据存储到核心数据中,以使应用程序在离线模式下工作。在将数据存储到核心数据之前,我们使用转换类(NSObject的子类),它用于将NSObject类的对象转换为NSManagedObject类的相应对象(NSObject - >转换类 - > NSManagedObject) 。 现在,我们在离线模式下面临性能问题,同时执行从NSManagedObject类的对象到NSObject类的相应对象(NSManagedObject - >转换类 - > NSObject)的转换。 是否有可能摆脱NSObject并在整个应用程序中仅使用NSManagedObject。


请注意,我们不希望在应用处于在线模式时将基本用户的任何数据存储在核心数据中。

2 个答案:

答案 0 :(得分:0)

实现CoreData时,你应该总是使用NSManagedObjects作为你的模型,为同一个对象创建两个不同的类是没有意义的,它很慢,你会有很多错误。

如果基本用户只能在在线模式下工作,则应保存数据库中的所有数据,但要在控制器上实施规则。

答案 1 :(得分:0)

如果您需要Core Data但不需要持久存储,请使用In-Memory存储。对于完全相同的模型但存储持久使用SQLite存储。唯一改变的是你如何创建商店。