Kle*_*son 70 xcode ios ios-app-group ios10
我今天已将我的Xcode 8更新为beta 2,并且我正在尝试在App和Today Extension之间共享数据.我正面对这个日志警告:
2016-07-08 18:00:24.732472 ProjetctX [941:42801] [用户默认值]无法读取CFPrefsPlistSource <0x1700f1280>中的值(域:group.xpto,用户:kCFPreferencesAnyUser,ByHost:是,容器:(null)) :将kCFPreferencesAnyUser与容器一起使用仅允许System Containers与cfprefsd分离
有人可以帮帮我吗?
wal*_*gan 52
这实际上是iOS 10和macOS 10.12中引入的虚假警告.(来源:https://twitter.com/Catfish_Man/status/784460565972332544)
预先添加团队ID的建议会使警告静音,但也会创建一个新的空用户默认值.这将导致任何先前存储的数据不可读.
目前,解决方案只是忽略它.
此外,论坛上的 Apple员工CFM :
记录的消息是虚假的,除非你做了一些我认为不可能没有使用私有函数的特定事情(它被添加以捕获对这些函数的滥用,但不幸的是还发现了一个正常的用例).
Arf*_*rza 12
以下是如何将NSUserDefaults与App Groups一起使用以在主应用程序和扩展程序之间传递数据:
在主应用程序中,在Project Navigator中选择您的项目.
选择主应用目标,然后选择功能选项卡.
将App Groups开关切换为ON.这将与Developer Portal进行通信,以生成一组权利.
创建一个新容器.根据Apple的说法,您的容器ID必须以"group"开头,因此诸如"group.io.intrepid.myapp"之类的名称是完美的.
选择您的扩展目标并重复启用应用组的过程.不要创建新的应用程序组,只需选择刚在主应用程序目标中创建的组.
在应用程序或扩展程序中读取或写入NSUserDefaults时,请勿访问NSUserDefaults.standardUserDefaults().而是使用NSUserDefaults(suiteName:"group.io.intrepid.myapp").注意:套件名称是在步骤4中创建的App Group容器的名称.
确保为扩展和应用功能部分启用并使用相同的组ID!
积分转到http://blog.intrepid.io/ios-app-extensions
对我来说,解决方案是不要对应用程序包标识符和“group.”之后的部分使用相同的标识符。
假设应用程序包 id 是“com.app.id”,那么组 id 为“group.com.app.id”会导致问题。当我将其更改为“group.com.app.id.something”后,它停止了。
从以下位置更改 Xcode 权利中的组名称:
group.com.mycompany.myapp
Run Code Online (Sandbox Code Playgroud)
到
group.MYTEAMID.com.mycompany.myapp
Run Code Online (Sandbox Code Playgroud)
ps:您可以在 developer.apple.com 会员中找到您的 MYTEAMID
| 归档时间: |
|
| 查看次数: |
27840 次 |
| 最近记录: |