6

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

在每次安装 1 个用户的情况下,我应该坚持使用 SQLLite 进行持久存储,还是有什么建议?

如果我允许每次安装多个用户,那么更喜欢哪种持久存储方法?

4

5 回答 5

7

您可以使用 Core Data 并为每个用户创建一个持久存储(在 ~/Library/Application Data/My App/ 中)

于 2009-07-19T09:44:22.907 回答
2

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

如果您的数据大小适中,这样做有几个优点:人类可读、人类可写、可变。

于 2009-07-19T15:47:42.693 回答
1

你想保存什么样的数据?当然,您仍然可以使用 sqlite 为多个用户存储数据(例如 Firefox 就是这样做的)。

但是根据您的数据,您可能希望将其保存到普通文件/文档中?看一下NSCoding协议和抽象NSCoder类。或者查看文档架构(NSDocumentController、、NSDocumentNSWindowController)。

于 2009-07-19T09:39:58.267 回答
1

目前每个安装只有一个用户;但是,如果每次安装有多个用户,我想了解存储方法如何变化。

只要默认情况下仅将数据保存在用户的主目录中,格式就无关紧要。

您的选项包括属性列表、Core Data(更多的是架构决策——您的应用程序基于 Core Data 或不使用它)、SQLite、NSKeyedArchiver 和您自己的自定义格式。

于 2009-07-19T12:55:32.167 回答
0

我会开始将数据存储到云端而不是本地存储。现在 ipad 出来了,如果你的 app 也用在 iphone 和 ipad 上怎么办。如果将数据存储在云端,则 iphone app 和 ipad 都可以使用相同的数据。如果你在本地存储,显然iphone app和ipad app不能使用相同的数据。

于 2010-01-30T19:44:13.420 回答