我有一些数据必须在本地存储在我的应用程序中,我想知道什么是最好的存储方式(从性能的角度来看)。数据不多,也不少。从plist的角度来看,数据可能如下所示:
-root
-main_block1
-sub_block1
-some_data
-some_data
-some_data
-sub_block2
-some_data
-some_data
-some_data
-sub_block3
-sub_block4
...
-sub_blockn
-main_block2
-main_block3
...
-main_blockn将有大约3-10 (13-15最大,我猜)主要区块。将主块看作一个字典,标题大约有10个字符。在每个主块中将有1-10 (最多10)个子块,这些子块也是字典。每个子块将包含一些纯文本数据。不超过100个字符的字符串(或可能是200-300)。
我需要读取这些数据,并将其混合在一起(交换一两个主块,交换一两个子块)。
我需要它尽快,因为我已经有相当多的东西在我的应用程序,所以我想知道我应该使用什么?属性列表文件还是SQLite数据库?
SQLite数据库基本上是一个文本文件,它周围有一个代码包装器,可以操作它的内容,所以我猜在我的情况下,plist文件会更快……
如前所述,数据不会超过几十千字节(希望不会:P)。
编辑:要添加一些信息:主块是需要按此顺序加载的视图,子块是需要按此顺序加载的主视图的子视图。一些数据将被输入到这些视图中。因此,主视图和子视图的顺序将不时更改,当用户决定时,子视图的数据将被重新加载。希望这能帮点忙。
发布于 2013-08-08 17:06:06
SQLite的真正目的是搜索记录存储,将数据连接在一起,并过滤出不需要的数据。听起来,您的数据结构可以很容易地放入内存中(尽管您应该对其进行度量以查看您拥有的内容),但不需要进行任何编辑。如果您必须更改表的模式,那么这种编辑在SQLite中将是一个令人头疼的问题。为什么不将其保留为字典/数组结构,并使用序列化将其存储在文件中,甚至在用户默认情况下?如果您打算在苹果的标准视图中显示它,您希望一个视图立即显示另一个视图中的更改,也许CoreData是您的朋友。
发布于 2013-08-08 15:29:58
那得看情况。如果您将不断地重新引用数据结构,并且每次重新加载plist,那么SQLite DB (保持打开状态)将更快。如果您只加载和引用数据一次,那么plist将获胜。当然,您也可以将核心数据用于简单的SQLite函数。
https://stackoverflow.com/questions/18130005
复制相似问题