NSUserDefaults还是后端?

时间:2014-11-18 03:33:35

标签: ios objective-c iphone nsuserdefaults backend

我必须在非常紧迫的期限内发布一个简单的应用程序,所以我没有时间学习任何东西,而不是我所知道的(例如学习核心数据)。使用NSUserDefaults为我的应用程序存储数据会好吗?它几乎就像一个检查列表应用程序,用户可以在其中包含每个项目附带一些数据的项目列表。

除此之外,我将使用像Parse这样的服务,我可以处理它,因为我已经用它构建了我的最后一个应用程序。

如果您将NSUserDefaults用于设置/偏好以外的其他内容,Apple会拒绝某个应用吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

来自Apple's documentation

  

NSUserDefaults类提供了与默认系统交互的编程接口。默认系统允许应用程序自定义其行为以匹配用户的首选项。例如,您可以允许用户确定应用程序显示的度量单位或自动保存文档的频率。应用程序通过将值分配给用户默认数据库中的一组参数来记录此类首选项。这些参数被称为默认值,因为它们通常用于确定启动时应用程序的默认状态或默认情况下的行为方式。

     

[...]

     

NSUserDefaults返回的值是不可变的,即使您将可变对象设置为值也是如此。例如,如果将可变字符串设置为“MyStringDefault”的值,则稍后使用stringForKey:检索的字符串将是不可变的。

换句话说,这不是存储可变应用程序数据的地方。

如果最终用户将修改清单数据(即添加新项目,或编辑清单上项目的文本),那么学习如何使用核心数据确实值得。多年来,它变得非常容易学习和使用。

您可以在http://code.tutsplus.com/series/core-data-from-scratch--cms-653

找到一系列精彩的核心数据教程

如果您正在寻找已针对iOS 8和Swift进行更新的内容(尽管它们主要是针对新语言的语法更改),您可以查看http://www.raywenderlich.com/85578/first-core-data-app-using-swift

答案 1 :(得分:1)

即使您不必要地承担NSUserDefault的负担,Apple也不会拒绝。但是你的应用程序的用户肯定会卸载它,或者如果应用程序崩溃或挂起他们的iPhone,操作系统会终止它。

NSUserDefault:是一种快速访问数据的方法。它存储在(键,值)对中,只要您的应用程序安装在手机中,它就会存在。通常基于会话的少量数据应该存储在其中。不是整个数据库。

数据库(CoreData或Sqlite):在看到的Coredata后面也是一个sqlite,对象互相交谈(如果使用Coredata,请考虑模型而不是表格)。

如果您的数据很大或预计会变大,我建议您使用Coredata。 CoreData不会花费太多时间。

答案 2 :(得分:0)

是的,您可以将数据存储在NSUserDefaults中,这将是本地存储数据的快速而脏的方法。

您可以使用Core Data,但我更喜欢使用FMDB并编写自己的SQLite语句。您也可以使用NSFileManager,只需读取和写入JSON文件。如果你所做的只是存储一个清单对象列表,Parse可能会有点过分。

答案 3 :(得分:0)

立即前往NSUserDefault! 当应用程序提交批准时,请查看SQlLite。这对下一个项目很有用。 解析...确定但是确保它不会过度使用,特别是如果您的数据量有限 祝好运 !