簡體   English   中英

在啟用應用程序組的情況下保持標准NSUserDefaults

[英]Persisting standard NSUserDefaults with App Groups enabled

原始情況:

我正在macOS 10.13上開發一個沙盒應用程序。 它是一個類似鞋盒的應用程序,由帶工具欄的主窗口組成。 在Interface Builder中設置窗口框架和工具欄配置的自動保存。

如果我運行並退出應用程序,我可以在應用程序的沙箱容器中看到包含預期數據的首選項文件(名為<app-identifier>.plist )。 一切正常。

使用應用程序組擴展應用程序:

為了與其他沙盒應用程序進行數據交換,我在目標的Xcode Capabilities選項卡中創建了一個應用程序組。

到目前為止,這是有效的,即在啟動應用程序時會創建一個額外的組容器。 通過UserDefaults.init(suiteName:"<group-name>")創建UserDefaults對象,還可以將共享首選項存儲到組容器中。

問題:

添加應用程序組后,例如工具欄配置的自動保存機制不再有效。 在干凈的Mac上啟動和退出應用程序不再在應用程序容器的Preferences目錄中創建.plist文件。 而是控制台顯示如下消息:

[User Defaults] attempt to set <value> for key in <key> in
non-persistent preferences domain CFPrefsPlistSource<address>
(Domain: <app-identifier>, User: kCFPreferencesCurrentUser,
ByHost: No, Container: (null), Contents Need Refresh: Yes)

它找我,自動保存機制不再能夠將其數據寫入首選項文件。

是否可以在應用程序組中同時使用標准UserDefaults和共享的UserDefaults?

問題解決了:重新啟動Mac后,一切都按預期工作。 這真的很奇怪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM