近期每次运行都发现报错,找了好久找到了方法。不过根据这个方法改完之后还需要自己迁移一下User Defaults的group地址中的数据。否则老用户打开直接就没数据。

错误提示

1
[User Defaults] Failed to read values in CFPrefsPlistSource<0x1700f1280> (Domain: group.x.p.t.o, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null)): Using kCFPreferencesAnyUser with a container is only allowed for System Containers, detaching from cfprefsd

解决方法

在我们的appgroup地址填写规范时,只填写了group.com.***.***这种形式,但是这种形式我们其实是不允许使用的。我们正确的格式应该是teamid.group.com.***.***

所以只要更改自己appgroup的变量地址即可消除这个报错。

查询自己的teamid

如果你不知道你的teamid,可以登录你的apple开发者后台,点击会员资格详细信息。

点击会员信息

里面就会告诉你的团队id是多少。

团队id

英文原文

Hi, everyone!

I have also encountered the same problem. And I finally figured it out!

Change from

[[NSUserDefaults alloc] initWithSuiteName:@”group.com..“];

to

[[NSUserDefaults alloc] initWithSuiteName:@”nnnnnnnnnn.group.com..“];

nnnnnnnnn is your team number, the one which you using to sign your code.

Tested under Xcode 8 GM and iOS 10 GM, and worked!

参考文档

iOS 10: Failed to read values in CFPrefsPlistSource