我正在使用带有 CoreData 和 iCloud 的小部件。它们共享同一个 App Group 容器。一切工作正常一点,但自发的小部件开始不断重新加载并在设备屏幕和小部件仪表板(您可以搜索和添加任何小部件的地方)中自行阻止。
它发生在 iPhone 模拟器(我使用 iPhone 8)和物理设备上。在设备上它表现得更好,例如,它可以重新加载一段时间然后停止。
我的想法与它有关,NSPersistentContainer
但我不确定。我试过这些没有运气:
- 延迟加载 Core Data 附带的所有内容:CoreDataStack、PersistentContainer 等。
- 用于更快
container.performBackgroundTask()
地返回数据。getTimeline(in:completion:)
我只测试了 1 条记录,结果是一样的。 - 使用 Core Data 删除所有内容并放置示例代码以显示静态文本 - 有效,重新加载消失,但我需要显示真实数据
在不同的场景中,我看到这些日志消息:
1) -[EXSwiftUI_Subsystem beginUsing:withBundle:] unexpectedly called multiple times
2) Bogus event received by listener connection
3) [lifecycle] WARNING: Did not receive handshake message from the host after waiting ~2 seconds. THIS MAY BE A SPURIOUS LAUNCH OF THE PLUGIN due to a message to an XPC endpoint other than the main service endpoint, or the CPU is highly contended and this extension or its host is not getting enough CPU time.
有时会崩溃
1) signal SIGTERM
2) [NSConcreteFileHandle fileDescriptor]: unknown error
我不知道为什么会这样。我很困惑,因为它有时可以工作并显示我的核心数据记录,并正确重新加载时间线,但有时它会发疯。
任何帮助或指导将不胜感激。
Xcode 12.0.1 (12A7300)
设备:iPhone Xs,iOS 14.0.1