我正在尝试在我的主macOS应用和我创建的扩展程序之间共享数据 我看到我必须使用“App Groups”并与“UserDefault(suiteName:”name“)”
共享数据问题:在主应用程序上打开应用程序组并添加了名称后,我在扩展程序上打开应用程序组,列表为空,我没有看到我刚创建的组?
有什么想法吗?
btw:团队成员在app和扩展程序上是相同的。我试图删除临时文件,清理项目,恢复Xcode和计算机。
编辑1:在iOS项目中,检测到应用程序组... 。
编辑2:我尝试使用Xcode 9,但同样的问题
编辑3:关于证书,标识符&对于苹果网站,您没有macOS类别“App Groups”,是否已弃用?
编辑4:如果我手动添加两个添加组名称,则输出中出现错误。
[用户默认值]无法读取CFPrefsPlistSource中的值< 0x6000000e4200> (域:726328455Z.test,用户:kCFPreferencesAnyUser,ByHost:是,容器:(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 :(得分:0)
在macOS项目中的app / app扩展程序之间共享数据:
1 / 在您的主项目目标中,选择功能并启用“应用组”。
2 / 点击“+”并添加新的应用组名称,必须以您的团队ID开头(例如643J438K.name.app)
3 / 为您的扩展应用目标重复1/2/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