需要有关哪种选项可以有效地在iPad上存储数据的建议

时间:2011-12-27 12:18:42

标签: objective-c ios ipad core-data xml-parsing

这是我第一次为客户开展一个大型项目。所以我不确定如何解决这个问题。不过我提出了两个不同的想法,但我需要专业人士对哪一个更好的意见:)

情况:

有一个应用程序可以在不同客户端的iPad上运行。应用程序数据使用巨型XML文件存储。该XML文件由服务器在所有客户端之间共享。因此,服务器具有集中式副本,每个客户端都有自己的副本。客户端对其XML副本进行更改后,将更新服务器副本,其他客户端通过更新的服务器副本更新其副本。

现在只有一个客户端可以同时进行更改,为了解决这个问题,我有一个逻辑,在客户端开始编辑XML之前,他们需要从服务器获取所有权,服务器只允许一个客户端一次编辑。

视觉表现:

enter image description here

<小时/> 现在在客户端,我必须考虑一个逻辑,通过它我将更新我的客户端副本并将其上传到服务器。有两个选项,

选项1:

在选项1中,我可以使用GDataXML解析器直接操作XML文件,并将该副本上传到服务器。对于持久性,我可以在iPad上的文档目录中保存客户端副本。

enter image description here

选项2:

在选项2中,我可以读取XML文件,为本地存储创建CoreData表示。当我更新核心数据中的数据时,我也将更改XML文件,而不是在服务器上上传该文件。双重工作,但我想更好的坚持。

enter image description here


现在哪一个更健壮,更可取?就个人而言,我打算做选项2,因为它似乎更健壮,因为我在核心数据中持久保存应用程序数据。但是选项1似乎更容易工作,但我不知道剩余的持久性有多好。

对不起冗长的问题,

感谢您提供任何意见。

3 个答案:

答案 0 :(得分:2)

有许多因素会影响第一个选项的选择。

  • XML文件有多大?如果需要处理非常大的文档,则可能需要逐步将XML(SAX)解析为核心数据。这将允许您访问文档的内容,而无需立即将其全部加载到内存中。

  • 您是否需要在数据中运行复杂查询?如果是这样,您可能最好使用核心数据获取谓词,而不是xpath或XSL。

  • 您是否已在使用核心数据?根据XML数据的结构,将数据导入现有的持久存储可能更简单。

否则,您可以通过解析整个文档并遍历生成的树或使用xpath查询来实现。

答案 1 :(得分:1)

如果您需要根据从服务器获得的内容创建对象图并将其显示给用户(您最有可能需要这样做),那么您应该坚持第二个选项,因为它允许简单而强大的数据持久性。

如果您不需要向用户提供XML文件中的任何数据,您当然可以将其存储在Documents目录中。

因此,如果这是一个客户端应用程序,并且它至少有一些来自XML文件的数据的可视化表示,那么您应该使用CoreData。

答案 2 :(得分:1)

如果您想定期更新数据,请使用CoreData