2017-07-04 58 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 
相关问题