另一个新手问题:在用 Obj-C 编写的 Cocoa 应用程序中存储数据的最佳方式是什么?例如,如果我想创建一种“测验器”,用预先编写的(和用户编写的)问题对用户进行测验?我将如何存储这些问题和答案?核心数据?
谢谢!
另一个新手问题:在用 Obj-C 编写的 Cocoa 应用程序中存储数据的最佳方式是什么?例如,如果我想创建一种“测验器”,用预先编写的(和用户编写的)问题对用户进行测验?我将如何存储这些问题和答案?核心数据?
谢谢!
当然是核心数据!
它会处理一切......看看这里:http: //developer.apple.com/macosx/coredata.html
它是一个完整的 API,可以处理:
可能这个解决方案对于您的问题来说太大了,但是您将学习如何通过一个简单的案例来使用它,将来我会派上用场的。
正如@Jack 所展示的,Core Data 无疑是一个很好的选择。还有一些其他的选择。
NSCoding
- 您可以使您的模型对象符合 NSCoding 协议(类似于java.io.Serializable
),这意味着您可以直接将它们写入文件。我发现当我没有大量数据要持久化并且我要持久化的数据具有相对简单的结构时,这是一个很好的选择。
SQLite - 如果您的数据非常相关,您可能需要考虑直接使用数据库(可能是 SQLite)。Core Data 是一个对象存储,虽然它处理对象之间的关系之类的事情,但它不允许您做真正有用的事情,例如INNER/LEFT/OUTER/CROSS/NATURAL JOIN
或其他多表运算符。
NSUserDefaults
- 如果您的数据非常小并且本质上只是键值对,那么您可以将其全部放入NSUserDefaults
对象中,这将在首选项文件中为您保留。但是,即使您的数据很简单,NSUserDefaults
如果您有很多数据,也可能不是最佳选择。