2017-07-04 35 views
0

我試圖在我的主macOS應用程序和我創建的擴展程序之間共享數據。
我看到我必須使用「應用程序組」並與「UserDefault(suiteName:」name「)共享數據」在主應用程序和當前窗口小部件之間共享數據macOS

問題:在主應用程序上打開App Groups並添加了名稱後,我然後打開擴展程序中的應用程序組,這個列表是空的,我看不到剛創建的組?

有什麼想法?

BTW:球隊PROFIL是兩個應用程序和擴展相同。我試圖刪除臨時文件,乾淨的項目,恢復Xcode和電腦。

enter image description here

編輯1:在iOS上的項目組檢測...應用。
編輯2:我試着用Xcode 9,但同樣的問題
編輯3:開證書,標識&型材蘋果網站,你沒有類別「應用程序組」適用於MacOS,是不是過時?
編輯4:如果我同時添加手動添加組名字,然後我得到了在輸出錯誤:。 [用戶默認值]無法讀取CFPrefsPlistSource中的值< 0x6000000e4200>(域:726328455Z.test,用戶:kCFPreferencesAnyUser,ByHost:是,Container:(null)):僅對容器使用kCFPreferencesAnyUser,僅允許系統容器從cfprefsd。

編輯5:看起來像它的工作,數據保存成功使用此代碼

UserDefaults(suiteName: "7263xxx55Z.test")!.set(selectedRow, forKey: "selectedRow") 
UserDefaults(suiteName: "7263xxx55Z.test")!.synchronize() 

而與此代碼讀取,我以前的錯誤,但我只是忽視它

let selectedRow = UserDefaults(suiteName: "726xxx55Z.test")!.integer(forKey: "selectedRow") 
+0

你嘗試點擊加號並添加組的名字嗎? – vadian

+0

是的,我用相同的應用程序名稱,按組號開始。等等,並沒有任何工作 – user3722523

+0

你有開發者帳戶的管理員權限? –

回答

0

在macOS項目中的應用程序/應用程序擴展之間共享數據:

1/在您的主項目目標中,選擇功能並啓用「應用程序組」。

2/點擊 「+」 添加一個新的應用程序組的名稱,它必須開始與您的團隊ID(如643J438K.name.app)

3/重複1/2 /爲您的擴展應用程序的目標,一定要添加的同名

4/要保存和獲取數據使用:

// Store data 
UserDefaults(suiteName: "643J438K.name.app")!.set(yourVariable, forKey: "yourKey") 
UserDefaults(suiteName: "643J438K.name.app")!.synchronize() 

// Fetch data (integer type here) 
UserDefaults(suiteName: "643J438K.name.app")!.integer(forKey: "yourKey") 

5/您可以檢查您的數據被正確打開這個文件保存:

/Users/UserName/Library/Group Containers/643J438K.name.app/Preferences/643J438K.name.app.plist 
相關問題