iOS NSUserDefaults standardUserDefaults

时间:2014-10-12 00:29:52

标签: ios objective-c nsuserdefaults

我有一个概念性问题 - 在访问standardUserDefaults时,我是否始终必须使用NSUserDefaults API?

我在我的应用中保存了很多设置/标志/ NSCoding信息,用于各种各样的事情。但是对于其中的一些事情,我对自己感到困扰standardUserDefaults并不自然。我想知道是否可以创建一个新的NSUserDefaults实体来管理我想要存储的某些类型的信息。

仅举例 - 我正在使用一些后台NSURLSessionDownloadTask,我想在downloadTask和启动下载任务的实际用户之间保存一些关系数据。我将这些数据保存到NSUserDefaults。我只是不确定是否可以访问NSUserDefaults(以及其他内容)!

[也许我没有解释这一点。遗憾!]

3 个答案:

答案 0 :(得分:1)

NSUserDefaults不适合您所描述的内容。

NSUserDefaults实际上是用于非常狭窄和特殊目的的。它主要是与用户互动,让他们设置自己的偏好并保持这些偏好。

它不能用作任何类型的通用存储器。

对于你想要的,你总是可以使用通常的NSDictionary等。如果您需要从多个位置访问它,请将其保留在应用程序委托上或创建单例类。如果您需要在运行期间持久化,请使用类似SQLite的内容。

答案 1 :(得分:1)

您可以做的一件事是使用[[NSUserDefaults alloc] initWithSuiteName:]创建单独的NSUserDefaults存储空间。

只需执行[[NSUserDefaults alloc] init]即可获得与standardUserDefaults相同的存储空间。

答案 2 :(得分:-1)

据我了解,没有必要专门为数据分类的特定目的创建新的用户默认文件。

NSUserDefaults可以与任何系统文件一样大,并且可以相应地调整数据转储。如果需要新的默认值,请参阅Catfish_Man的答案。此外,这特别针对您处理特定应用程序组的情况。