错误消息:仅在真实设备中使用应用程序组“无法读取CFPrefsPlistSource中的值”

时间:2018-11-15 08:38:55

标签: swift ios-app-group userdefaults

在主应用程序中,我创建组“ group.com.dronpop.Timetable”。为此,我执行了以下步骤:

  1. 在“项目浏览器”中选择项目。
  2. 选择主要应用目标,然后选择“功能”标签。
  3. 将“应用程序组”开关切换为“开”。
  4. 创建一个名称为“ group.com.dronpop.Timetable”的新容器并启用它。
  5. 选择扩展目标并重复启用应用程序组的过程
  6. 选择刚刚在主应用程序目标中创建的组,然后启用它。

我创建了一个单独的库,以便从主应用程序和Today扩展中的容器接收数据。 下面的代码我得到了容器。它已成功执行,没有崩溃和错误消息:

private let groupId = "group.com.dronpop.Timetable"
func sharedUserDefaults() -> UserDefaults {
    return UserDefaults(suiteName: groupId)!
}

然后,在同一个库中,我尝试使用以下代码从容器中获取值:

private func restoreSet(key: String) -> Set<String> {
    let userDefaults = sharedUserDefaults()
    return Set(userDefaults.array(forKey: key) as? [String] ?? [])
}

在执行该行期间:userDefaults.array(forKey: key),我收到以下消息:

  

2018-11-15 11:08:24.954866 + 0300时间表[289:9226] [用户默认设置]   无法读取CFPrefsPlistSource <0x281acc380>中的值(域:   group.com.dronpop.Timetable,用户:kCFPreferencesAnyUser,ByHost:是,   容器:(空),需要刷新的内容:是):使用   带有容器的kCFPreferencesAnyUser仅适用于系统   与cfprefsd分离的容器

但是代码可以正常工作,并返回在那里写入的元素(非空数组)。我仅在运行应用程序时收到此消息,该消息不在模拟器上

我做错了什么以及如何摆脱此消息?它工作正常,但恐怕在发布时会遭到拒绝。我试图重新安装该应用程序并重新启动iPhone,但这并没有帮助我。

0 个答案:

没有答案