我期待发生的事情:
我创建了一个带有用户名的NSUserDefaults对象(我选择的NSString对吗?),当我保存默认值时,它会为那个用户保存这些默认值。
实际发生的事情:
当我尝试为不同的用户名创建NSUserDefaults时,它们总是保存在相同的 com.companyname.appname.plist 文件中,因此它似乎忽略了每个用户的部分,只是保存应用程序范围。
我的问题:
这适用于iOS还是仅适用于OSX?我错过了什么?我不应该为每个用户获取不同的plist文件吗?我查看了它在xcode中创建的一个.plist,并且没有任何内容告诉默认它属于特定的用户名。
答案 0 :(得分:7)
是的,你误解了它,但实际上这是一个命名不好的方法。
基本上,允许以root用户身份运行的应用程序(或超级用户)为其他用户访问UserDefaults。
在这种情况下,user是unix用户,而不是您(开发人员)选择的任意分区名称。
答案 1 :(得分:1)
我很确定,NSUserDefaults适用于应用,而非用户。这是该应用的默认值。现在,您需要对其进行建模以存储多个用户的首选项。假设使用NSDictionary
答案 2 :(得分:0)
NSUserDefaults结合了来自不同来源的值。
如果您在企业中使用托管应用程序,则会有来自企业设备管理系统的首选项。
应用程序本身将拥有自己的内置默认值。
最重要的是,应用程序可以读取和设置每个用户的应用程序;这些存储在用户的库/首选项中。
如果您的应用中没有任何异常,则会合并所有这些来源的偏好设置,并且您保存的任何偏好设置都将存储为该特定用户的偏好设置。
作为一个非常不寻常的特殊情况,以root身份而不是特定用户身份运行的应用可以访问每个用户的首选项。