2012-02-18 67 views
1

我期待發生的事情:我誤解NSUserDefaults initWithUser?

我創建一個對象NSUserDefaults的使用用戶名(我選擇正確的NSString?),當我保存它的默認節約了只是用戶的默認值。

實際發生的:

當我嘗試創建不同的用戶名,他們NSUserDefaults的始終保存到同一com.companyname.appname.plist文件,因此它似乎忽略了每個用戶的一部分,只需保存應用程序範圍。

我的問題:

是否iOS和OSX僅這項工作?我錯過了什麼?我不應該得到每個用戶不同的plist文件嗎?我查看了它在xcode中創建的.plist,並且沒有任何內容告訴它默認它屬於特定的用戶名。

回答

7

是的,你是誤解它,但它真的是一個命名不正確的方法。

本質上,它允許以root(或超級用戶)身份運行的應用程序爲其他用戶訪問UserDefaults。

在這種情況下,用戶是unix用戶,而不是您(開發人員)選擇的任意分區名稱。

1

我很確定,NSUserDefaults適用於應用程序,而不是用戶。這是該應用程序的默認值。現在由您來建模它來存儲多個用戶的偏好。說使用NSDictionary

0

NSUserDefaults結合了來自不同來源的值。

如果您在企業中使用託管應用程序,將會有來自企業設備管理系統的偏好。

應用程序本身將擁有自己的內置默認值。

最重要的是,應用程序可以讀取和設置每個用戶的應用程序;這些都存儲在用戶的庫/首選項中。

如果你在你的應用中沒有任何異常,來自所有這些源的偏好將被合併,並且你保存的偏好將被存儲爲該特定用戶的偏好。

而作爲非常非常不尋常的特例,以root用戶身份運行的應用程序可以每用戶的首選項訪問