2

我有一些数据必须本地存储在我的应用程序中,我想知道存储它的最佳方式是什么(从性能角度来看)。数据不多,也很少。从 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)。

编辑:添加一些信息:主块是需要按此顺序加载的视图,子块是需要按此顺序加载的主视图的子视图。一些数据是将馈送到这些视图的数据。因此,主视图和子视图的顺序将不时更改,并且子视图的数据将在用户决定时重新加载。希望这个对你有帮助。

4

2 回答 2

3

这取决于。如果您将不断地重新引用数据结构,并且每次都重新加载 plist,那么 SQLite DB(您保持打开状态)会更快。如果您只加载和引用一次数据,则 plist 获胜。当然,您可以将 Core Data 用于简单的 SQLite 函数。

于 2013-08-08T15:29:58.293 回答
3

SQLite 真正用于搜索记录存储、将数据连接在一起以及过滤掉不需要的数据。听起来您有一个可以轻松放入内存的数据结构(尽管您应该对其进行测量以查看您拥有的内容),几乎不需要编辑。如果您必须更改表的架构,那么在 SQLite 中编辑将是一个令人头疼的问题。为什么不将其保存为字典/数组结构,并使用序列化将其存储在文件中,甚至存储在用户默认值中?如果您打算在 Apple 的标准视图中显示它,您希望一个视图立即显示在另一个视图中所做的更改,那么 CoreData 可能是您的朋友。

于 2013-08-08T17:06:06.207 回答