Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML作为iPhone中的数据库_Iphone_Objective C_Xml_Plist - Fatal编程技术网

XML作为iPhone中的数据库

XML作为iPhone中的数据库,iphone,objective-c,xml,plist,Iphone,Objective C,Xml,Plist,我们必须用Objective-C编写一个目录应用程序,我们现在使用plist xml文件来读写数据,并在其中存储一些数据 从mysql数据库生成的plist xml文件,为了避免缩放问题,我们必须决定是使用xml plist文件还是将所有内容都移动到SQLLite?正如我们估计的那样,xml的最大文件大小是10MB 有什么建议吗 我会选择sqllite dbs,使用正确的包装器,在不解析所有内容的情况下很容易获取数据和写入数据,而且sqllite非常快……另一个选择是移动到CoreData,我更

我们必须用Objective-C编写一个目录应用程序,我们现在使用plist xml文件来读写数据,并在其中存储一些数据

从mysql数据库生成的plist xml文件,为了避免缩放问题,我们必须决定是使用xml plist文件还是将所有内容都移动到SQLLite?正如我们估计的那样,xml的最大文件大小是10MB


有什么建议吗

我会选择sqllite dbs,使用正确的包装器,在不解析所有内容的情况下很容易获取数据和写入数据,而且sqllite非常快……

另一个选择是移动到CoreData,我更喜欢它而不是SQLite。

这里是切换到SQLite的问题,数据库的文件大小将至少是plist大小的3倍。SQLite数据库除了存储应用程序从用户交互中生成的信息外,还存储了大量信息

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


你也可以随时尝试。即使使用此选项,您也需要重新构造和移动数据。这也需要为您的应用程序添加大量新代码。

您还应该研究
NSCoding
NSKeyedArchiver
,它几乎与XML Plist完全相同,只是它是一种二进制格式(非常紧凑),速度更快,并且支持指针(因此,如果在写入文件时同一对象位于多个位置,则在读取文件时仍将是同一对象)

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

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

我总是避免在iOS设备上使用XML,因为磁盘空间非常宝贵。显然,有时你需要XML,尤其是当你允许用户在你的应用程序中导入/导出文件,而他们希望基于XML的东西时