2009-07-19 108 views
6

在使用Cocoa/Objective-C编写MacOSX应用程序时,我希望能够存储用户输入的数据。目前每个安装只有一个用户;但是,如果存储方法在每次安装时都是多个用户,我想知道存储方法如何更改。持久存储Cocoa/MacOSX

对于每个安装一个用户的情况,我应该坚持SQLLite进行持久性存储,还是有什么建议?

如果我允许每个安装有多个用户,那么哪个持久性存储方法会是首选?

回答

7

您可以使用核心数据,并为每个用户创建一个持久性存储(在〜/库/应用程序数据/我的应用/)

+0

我几乎总是会开发一个新的应用程序与核心数据,除非我可以拿出一个很好的理由不要。想到存储在云中的数据,但即使如此,我想我可能会使用核心数据作为本地缓存。另外,核心数据很快。 – 2009-07-19 13:03:47

+0

如果您在不同用户之间共享数据,这可能会使事情变得复杂。但总是有基于文档的核心数据... – 2009-07-19 13:04:43

+0

好的。我该如何做到这一点? – mthama 2014-08-13 23:28:46

1

要保存哪种数据?当然,你仍然可以使用sqlite为多个用户存储数据(例如Firefox这样做)。

但是,根据您的数据,您可能想将其保存到普通文件/文档中?看看NSCoding协议和摘要NSCoder类。或者查看文档体系结构(NSDocumentController,NSDocumentNSWindowController)。

1

只会有每个安装的那一刻一个用户;但是,如果存储方法在每次安装时都是多个用户,我想知道存储方法如何更改。

只要您仅在默认情况下将数据保存在用户的主目录中,格式无关紧要。您的选项包括属性列表,核心数据(更多的架构决定 - 您要么将您的应用程序基于核心数据,要么不使用它),SQLite,NSKeyedArchiver和您自己的自定义格式。

2

您也可以考虑使用NSDictionary作为内部存储机制,然后使用[NSDictionary writeToFile:atomically:]将它们写出到属性列表文件。我的一位朋友喜欢把字典称为上帝的数据结构(脸颊上的舌头)。

如果您的数据大小适中,有几个好处:人类可读,人类可写,可改变。

0

我会开始将数据存储到云端而不是本地存储。现在iPad已经问世了,如果你的应用程序在iPhone和iPad上使用,该怎么办?如果您将数据存储在云上,iPhone应用程序和iPad都可以使用相同的数据。如果你在本地存储,显然,iphone应用程序和ipad应用程序不能使用相同的数据。