问题描述
我正在做一个记事应用。使用CoreData + CloudKit同步数据。有两个名为“ Cardbag”和“ Card”的实体。
卡与名为Pack的CardPack有一对一的关系。
STEPS:
- 在设备A上,创建CardPack NSManagedObject,保存并等待cloudkit同步到设备B。
let cardpack = CardPack(context: Database.viewContext)
try! Database.viewContext.obtainPermanentIDs(for: [cardpack])
cardpack.uuid = UUID.simpleID
cardpack.name = "test"
try! Database.viewContext.save()
- 在设备A上,创建500个Cards NSManagedObject,并设置card.pack = cardpack,保存。
Database.viewContext.performAndWait {
for i in 0..<500 {
let card: Card = Card(context: Database.viewContext)
try! Database.viewContext.obtainPermanentIDs(for: [card])
card.uuid = UUID.simpleID
card.pack = pack
}
try! Database.viewContext.save()
}
- 设备B,请参阅Xcode控制台,当从Cloudkit服务器开始下载卡记录时,请迅速删除设备B上的 cardpack 。
let context = Database.viewContext
context.performAndWait {
guard let pack = (try? context.existingObject(with: packMOID)) as? CardPack else { return }
context.delete(pack)
try? context.save()
}
然后崩溃。
Crash Error:
*** Terminating app due to uncaught exception CoreData: debug: CoreData+CloudKit: -[PFMirroredOneToManyRelationship updateRelationshipValueUsingImportContext:andManagedObjectContext:error:](424): Linking object with record name <CKRecordID: 0x281a8c7c0; recordName=9FFDDFE1-FEB2-45B7-A51F-F95719891BA2,zoneID=com.apple.coredata.cloudkit.zone:__defaultOwner__> to <CKRecordID: 0x281a8c9c0; recordName=D7930F69-180E-4683-95F3-27CD394FFC91,zoneID=com.apple.coredata.cloudkit.zone:__defaultOwner__> via pack
2020-09-14 17:27:54.901348+0800 TwinklingCard[740:60405] *** Terminating app due to uncaught exception 'NSInvalidArgumentException',reason: '*** -_referenceData64 only defined for abstract class. Define -[NSTemporaryObjectID_default _referenceData64]!'
*** First throw call stack:
(0x190f19344 0x190c2ecc0 0x19144f66c 0x195a153c8 0x1959b8a3c 0x195acacb8 0x195a0b650 0x1958d722c 0x195ac93bc 0x195ac92e4 0x195af9488 0x195a0b650 0x104f4b4d8 0x104f5ae14 0x1958d725c 0x195af9084 0x195b4d4d4 0x195af8e38 0x195afab80 0x1959ce1ac 0x195afaad8 0x104f4b4d8 0x104f5ae14 0x195afaa28 0x195af7ed4 0x19606ea10 0x196027418 0x1960226d8 0x1960b6afc 0x104f5a7c4 0x104f4b4d8 0x104f52c20 0x104f53868 0x104f5f270 0x190c21718 0x190c279c8)
libc++abi.dylib: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',reason: '*** -_referenceData64 only defined for abstract class. Define -[NSTemporaryObjectID_default _referenceData64]!'
terminating with uncaught exception of type NSException
我认为事情可能是这样的: 与包装和卡片建立关系的同步系统。我删除了包。系统找不到包NSManagedObject,然后崩溃。 但是,我该如何处理呢?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)