启用了binary类型和"Allow External Storage“的核心数据模型属性会导致NSPersistentCloudKitContainer同步机制崩溃。
这只在接收设备上发生,这意味着上传到CloudKit成功,但从CloudKit下载会导致在NSManagedContext中崩溃。
<NSSQLSaveChangesRequestContext: 0x281ec8420> , *** NSAllocateMemoryPages(28317598) failed with userInfo of (null)
Terminating app due to
当通过cloudkit同步新信息时,我在获取要更新的视图时遇到问题。在两个设备上运行此应用程序时,如果设备A添加了调色板,则该调色板仅在应用程序重启时显示在设备B上。我看过其他一些关于堆栈溢出的答案,但都没有成功。有谁知道吗? 下面是我来自AppDeligate的持久性容器 lazy var persistentContainer: NSPersistentCloudKitContainer = {
let container = NSPersistentCloudKitContainer(name: "Swatch")
// get
我不能将令人兴奋的核心数据堆栈更改为NSPersistentCloudKitContainer,因为这只是iOS 13及更高版本的支持特性,但希望将其设置为iOS 13及更高版本,同时为早期版本设置NSPersistentContainer。
我有相当多的经验与iOS和斯威夫特合作,但从来没有做过这样的事情,以版本控制和某些vars。
在使用iOS 13之前,这是我通常的一个:
lazy var persistentContainer: NSPersistentContainer = {
/*
The persistent container for the applicat
我目前正在制作一个应用程序,它需要通过iCloud跨设备同步它的CoreData存储。 一切都很好,除了它不是实时同步。(或者至少在某种程度上接近于此)。在Device1更改了一些东西后,当我在Device2上什么也不做时,它根本不同步。事实上,我必须最小化并重新打开Device2上的应用程序才能使同步正常工作。 这很好地演示了它:(source) ? 下面是我的代码片段: let container: NSPersistentCloudKitContainer
var context: NSManagedObjectContext { container.viewContext }
in
大多数CloudKit+CoreData教程使用SwiftUI,它们的实现包括@FetchRequest,它自动检测CoreData获取中的更改并刷新UI。
如果没有SwiftUI,我将如何实现这一点?我希望能够控制如何刷新UI,以响应于检测到由于CoreData更新而发生的iCloud更改。
我使用它来设置NSPersistentCloudKitContainer并注册远程通知:
let storeDescription = NSPersistentStoreDescription()
storeDescription.setOption(true as NSNumber, for