2012-04-03 44 views
4

我们有在Android,iOS和Windows移动版上运行的本机应用程序。用于其他设备(如BlackBerry)的移动网络解决方案。这些应用程序目前对我们的CMS做了最初的大量拉动,然后将XML从我们的CMS解析为其数据存储。这些数据可以在设备上离线使用。随着我们扩展,我们正在寻找比XML更优雅的东西。多个平台的数据存储。我应该在我们的环境中使用CoreData吗?

以下是我们正在考虑的选项:

选项1.导出一个SQLite数据库到Android,iOS和Windows 7的手机,他们都那么作为它的数据存储使用。

优点:CMS出口相同的数据格式,对所有设备

缺点:iOS的未使用CoreData喜欢的一切,我一直在读说,我应该使用。

选项2.导出sqlite数据库到所有平台,但有iOS插入数据到CoreData。我们正在开发CMS的想法,将JSON格式导出到iOS,并将iOS插入CoreData,因为我们对应用程序的增量更新将使用JSON格式。

优点:iOS使用CoreData及其所有优点。

缺点:iOS版现在我们所有的其他平台迷路,使得它需要一个折衷的解决办法

好奇,如果任何人有需要持久性存储以及您的团队不同平台的移动应用程序(将数据转换成CoreData存储。)解决它。

2013年3月22日为小的澄清和语法上的变化。

回答

1

真正的问题是:你真的可以在这些平台上重复使用任何代码吗?不多。可能太少了,不用担心。事实上,如果你没有一个通用的C/C++库(广义上,如的一组函数)来处理SQLite数据库中的数据,那么没有太多的代码要重用。

有些情况下,您会严重依赖特定的SQL查询以获得良好性能。这些查询在Core Data中可能会非常低效。在这种情况下,我会去与SQLite和FMDB

如果查询非常简单,而且您主要需要显示/编辑数据,那么使用Core Data将会更容易。

4

偶然发现了这个解决方案,在做研究: https://github.com/AlexDenisov/iActiveRecord

它的行为类似于CoreData,使得它利用的对象图。它为您构建幕后的SQL语句,以便您不必关心编写查询。

我对这个解决方案的喜欢是,iActiveRecord指向我们的CMS(利用django)导出的SQLite数据库,我们只是定义Obj-C类以匹配表的模式(类似于定义数据模型CoreData)。在类模式被定义为反映我们的表模式之后,我们可以开始使用对象而不用担心sql查询。

CoreData无法做到这一点,因为它需要我们编写一个“转换器”来从CMS导出数据到CoreData的数据存储区。

当然,CoreData的所有额外功能都缺失,但对于我们的用例,利用iActiveRecord可以衡量其他选项。

相关问题