在iphone上持久化数据对象

在iphone上持久化数据对象,iphone,core-data,persistence,Iphone,Core Data,Persistence,我想知道你对在iPhone上持久化对象(NSDictionary和NSMutableArray对象)有何想法 我在脑海中经历了几个选择: 1.)我们坚持使用NSUserDefaults,这种方法似乎最简单,我想继续使用它。我想要存储的数据可能只有几千字节的对象 2.)使用NSKeyedArchiver(确切的名称暗指我atm)进行归档/序列化,然后将其放入SQLITe数据库。但问题是: 我需要数据,当它在手机上更改时,自动保存。NSUserDefaults对此有一个同步方法,但对于方法2,我必须

我想知道你对在iPhone上持久化对象(NSDictionary和NSMutableArray对象)有何想法

我在脑海中经历了几个选择:

1.)我们坚持使用NSUserDefaults,这种方法似乎最简单,我想继续使用它。我想要存储的数据可能只有几千字节的对象

2.)使用NSKeyedArchiver(确切的名称暗指我atm)进行归档/序列化,然后将其放入SQLITe数据库。但问题是:

我需要数据,当它在手机上更改时,自动保存。NSUserDefaults对此有一个同步方法,但对于方法2,我必须重新归档整个对象数组,然后将其存储回数据库。这似乎需要做很多工作

3.)忘了这一点,我听说CoreData能够处理这类事情,但我不确定自己是否完全理解


你们怎么想?您还有其他建议吗?

我认为
NSDictionary
NSArray
writeToFile:atomically:
实例方法,可以将它们序列化并写入给定的文件名。你可以为你的
NSDictionary
NSArray
添加观察者,在它们被更改后由它们编写。

我已经在我自己的一些应用程序上成功地使用了
NSKeyedArchiver
writeToFile:atomicly:

表演一直很棒。您可以反复保存几千行文本,而不必注意

就个人而言,除非您需要查询,否则我会避免使用sqlite。如果只使用
NSDictionary
填充
NSArray


使用
NSKeyedArchiver
的优点是,一旦开始创建“域对象”,就可以以相同的方式持久化这些对象。出于这个原因,我99%的时间都在使用NSKeyedArchiver。

我建议多走一段路,使用核心数据

  • 首先,你会学到一件新东西,一件好事
  • 而且,你的应用程序启动更快,处理数据更流畅,因为数据是分块获取的,而不需要读取整个数据集

…别害怕,试试看。从小处做起,继续前进。

我同意。从iPhone的一个核心数据模板开始,并使用它。您甚至可以将模板中的代码直接复制并粘贴到项目中,以便快速启动和运行。我同意,但是:核心数据没有数组和字典,因此这意味着您的应用程序需要围绕核心数据进行设计,以便充分利用它。CD不像文件系统那样是固定式存储系统。这是你应用程序的“核心”。答案很好,但你不能否认NSKeyedArchiving单个域对象或NSDictionary的简单性。