在使用 Cocoa/Objective-C 为 MacOSX 编写应用程序时,我希望能够存储用户输入的数据。目前每个安装只有一个用户;但是,如果每次安装有多个用户,我想了解存储方法如何变化。
在每次安装 1 个用户的情况下,我应该坚持使用 SQLLite 进行持久存储,还是有什么建议?
如果我允许每次安装多个用户,那么更喜欢哪种持久存储方法?
在使用 Cocoa/Objective-C 为 MacOSX 编写应用程序时,我希望能够存储用户输入的数据。目前每个安装只有一个用户;但是,如果每次安装有多个用户,我想了解存储方法如何变化。
在每次安装 1 个用户的情况下,我应该坚持使用 SQLLite 进行持久存储,还是有什么建议?
如果我允许每次安装多个用户,那么更喜欢哪种持久存储方法?
您可以使用 Core Data 并为每个用户创建一个持久存储(在 ~/Library/Application Data/My App/ 中)
您还可以考虑使用 NSDictionary 作为内部存储机制,然后使用 [NSDictionary writeToFile:atomically:] 将它们写入属性列表文件。我的一个朋友喜欢把字典称为上帝的数据结构(舌头在脸颊上)。
如果您的数据大小适中,这样做有几个优点:人类可读、人类可写、可变。
你想保存什么样的数据?当然,您仍然可以使用 sqlite 为多个用户存储数据(例如 Firefox 就是这样做的)。
但是根据您的数据,您可能希望将其保存到普通文件/文档中?看一下NSCoding
协议和抽象NSCoder
类。或者查看文档架构(NSDocumentController
、、NSDocument
和NSWindowController
)。
目前每个安装只有一个用户;但是,如果每次安装有多个用户,我想了解存储方法如何变化。
只要默认情况下仅将数据保存在用户的主目录中,格式就无关紧要。
您的选项包括属性列表、Core Data(更多的是架构决策——您的应用程序基于 Core Data 或不使用它)、SQLite、NSKeyedArchiver 和您自己的自定义格式。
我会开始将数据存储到云端而不是本地存储。现在 ipad 出来了,如果你的 app 也用在 iphone 和 ipad 上怎么办。如果将数据存储在云端,则 iphone app 和 ipad 都可以使用相同的数据。如果你在本地存储,显然iphone app和ipad app不能使用相同的数据。