我已经为我的其他应用程序(在今天的扩展程序和主机应用程序之间)运行了这个,但是,对于使用Xcode 9.1创建的全新应用程序,我看到了奇怪的错误:
2017-12-25 17:16:42.077247+0530 Controller[851:11684] [User Defaults] Couldn't read values in CFPrefsPlistSource<0x10470c970> (Domain: group.com.judepereira, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null), Contents Need Refresh: Yes): Using kCFPreferencesAnyUser with a container is only allowed for System Containers, detaching from cfprefsd
2017-12-25 17:16:42.079711+0530 Controller[851:11707] [User Defaults] Couldn't write value for key idc in CFPrefsPlistSource<0x10470c620> (Domain: group.com.judepereira, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access, switching to read-only
2017-12-25 17:16:42.081354+0530 Controller[851:11707] [User Defaults] Couldn't write value for key rules in CFPrefsPlistSource<0x10470c620> (Domain: group.com.judepereira, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): Operation not allowed, switching to read-only
我已按照指定的here和here指南进行操作。而且,更奇怪的是它在主机应用程序中完美运行。仅当我的邮件过滤器扩展尝试更新此应用程序组的用户默认值时,才会看到这些随机错误。
以下是我如何更新它:
NSUserDefaults *defaults = [[NSUserDefaults alloc]
initWithSuiteName:@"group.com.judepereira"];
NSLog(@"idc=%@", [defaults objectForKey:@"idc"]);
[defaults setObject:@"judepereira" forKey:@"idc"];
答案 0 :(得分:1)
经过进一步调查后,此特定扩展程序不允许使用 苹果的回答。
出于隐私原因,系统会处理与您的所有通信 关联服务器;您的邮件过滤器应用扩展程序无法访问 直接联网。
出于隐私原因,您的应用扩展程序无法将数据写入 与包含的应用共享的容器。
为此,您不应将数据写入共享容器 特定类型的应用程序扩展。通常,您可以使用App 具有NSUserDefaults的组可在您的应用之间交流信息 及其扩展名。