我误解了NSUserDefaults initWithUser吗?

时间:2012-02-18 05:37:53

标签: ios nsuserdefaults

我期待发生的事情:

我创建了一个带有用户名的NSUserDefaults对象(我选择的NSString对吗?),当我保存默认值时,它会为那个用户保存这些默认值。

实际发生的事情:

当我尝试为不同的用户名创建NSUserDefaults时,它们总是保存在相同的 com.companyname.appname.plist 文件中,因此它似乎忽略了每个用户的部分,只是保存应用程序范围。

我的问题:

这适用于iOS还是仅适用于OSX?我错过了什么?我不应该为每个用户获取不同的plist文件吗?我查看了它在xcode中创建的一个.plist,并且没有任何内容告诉默认它属于特定的用户名。

3 个答案:

答案 0 :(得分:7)

是的,你误解了它,但实际上这是一个命名不好的方法。

基本上,允许以root用户身份运行的应用程序(或超级用户)为其他用户访问UserDefaults。

在这种情况下,user是unix用户,而不是您(开发人员)选择的任意分区名称。

答案 1 :(得分:1)

我很确定,NSUserDefaults适用于应用,而非用户。这是该应用的默认值。现在,您需要对其进行建模以存储多个用户的首选项。假设使用NSDictionary

答案 2 :(得分:0)

NSUserDefaults结合了来自不同来源的值。

如果您在企业中使用托管应用程序,则会有来自企业设备管理系统的首选项。

应用程序本身将拥有自己的内置默认值。

最重要的是,应用程序可以读取和设置每个用户的应用程序;这些存储在用户的库/首选项中。

如果您的应用中没有任何异常,则会合并所有这些来源的偏好设置,并且您保存的任何偏好设置都将存储为该特定用户的偏好设置。

作为一个非常不寻常的特殊情况,以root身份而不是特定用户身份运行的应用可以访问每个用户的首选项。