2011-12-12 57 views
2

我们必须在Objective-C中编写一个目录应用程序,我们现在使用plist xml文件读取数据并写入数据,并在其中存储一些数据。XML作为数据库的iPhone

从mysql数据库生成的plist xml文件,为了避免缩放问题,我们必须决定天气留在xml plist文件还是将每一个东西移动到SQLLite?因为我们估计xml的最大文件大小是10MB。

有何建议?

回答

1

另一种选择是移动到CoreData,这我宁愿通过SQLite。

0

我会去一个sqllite DBS,用正确的包装是很容易得到的数据和没有解析一切写数据和sqllite非常快...

0

继承人切换到SQLite的问题,数据库的文件大小至少是plist大小的3倍。除了应用程序通过用户交互产生的内容之外,SQLite数据库还存储大量信息。

至于使用超过10MB的plist,如果用户一直写入该文件,除非您将写入放在新线程中,否则会有一些明显的延迟。

您总是可以尝试CoreData以及。即使使用此选项,您也需要重新构建和移动数据。这也将需要大量的新代码给你的应用程序。

0

您还应该查看NSCodingNSKeyedArchiver,它几乎与XML Plist完全相同,只是它是二进制格式(非常紧凑),速度更快,并且它支持指针(所以如果相同的对象是在你写这个文件的时候,在多个地方,当你读它时它仍然是同一个对象)。

从MySQL数据库生成一个NSCoding文件可能是一个挑战(我从来没有尝试过),但是您可以生成一个plist,然后在设备上立即将其转换为二进制格式。

我的经验法则是,如果它适合RAM,你应该使用NSCoding,如果它不适合在RAM中,你应该使用SQLite或核心数据。

我总是会避免在iOS设备上使用XML,因此磁盘空间非常昂贵。显然,有时你需要XML,尤其是如果你要允许用户导入/导出文件进出你的应用程序,并且期望基于XML的东西。