【发布时间】:2018-07-14 12:28:58
【问题描述】:
我为我的上下文添加了 NSMergePolicyType,但每次我遇到冲突时,应用程序都会崩溃。
我在 xcdatamodeld 中的表中添加了约束(使用 "id" )
这是我的上下文:
lazy var managedObjectContext: NSManagedObjectContext? =
{
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
let coordinator = self.persistentStoreCoordinator
if coordinator == nil {
return nil
}
var managedObjectContext = NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.privateQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
managedObjectContext.mergePolicy = NSMergePolicyType.overwriteMergePolicyType
return managedObjectContext
}()
这是存档:
func saveContext(onSuccess: (() -> Void)?) {
if let moc = self.managedObjectContext {
moc.perform {
if moc.hasChanges {
do {
try moc.save()
onSuccess?()
} catch {
print("SaveContext error \(error)")
}
}
}
}
但是当我与 id 发生冲突时,应用程序就会崩溃
- 在创建的第一个实体上,一切正常
- 但是当我添加具有相同 ID 的实体时,应用程序崩溃了。
错误:
-[_SwiftValue resolveConflicts:error:]: unrecognized selector sent to instance 0x1d0256680
核心数据日志:
CoreData: annotation: sql connection fetch time: 0.0001s
CoreData: annotation: total fetch execution time: 0.0001s for 1 rows.
CoreData: annotation: fault fulfilled from database for :
0xd000000000080004 <x-coredata://E7F35452-965D-460D-AAFE-
5ED17B8E0174/DatapulseEntity/p2>
CoreData: sql: SELECT t0.Z_ENT, t0.Z_PK, t0.Z_OPT, t0.ZCREATEDTIME,
t0.ZDELETEDTIME, t0.ZDESCRIPTION_VALUE, t0.ZID, t0.ZIS_MY_FAVORITE,
t0.ZIS_SELF_LIKED, t0.ZIS_SELF_SAVED_OFFLINE, t0.ZIS_SELF_VIEWED,
t0.ZIS_SHARED, t0.ZLIKES, t0.ZNAME, t0.ZPARENT_ID, t0.ZTHUMBNAIL,
t0.ZTYPE, t0.ZUPDATEDTIME, t0.ZVIEWS, t0.ZLINKS, t0.ZREFRESHRATE FROM ZKNOWLEDGEBASEENTITY t0 WHERE t0.Z_PK = ?
CoreData: annotation: sql connection fetch time: 0.0000s
CoreData: annotation: total fetch execution time: 0.0000s for 1 rows.
CoreData: annotation: fault fulfilled from database for :
0xd000000000040004 <x-coredata://E7F35452-965D-460D-AAFE-5ED17B8E0174/KnowledgeBaseEntity/p1>
2018-02-04 16:18:30.149318+0200[49571:18233278] -[_SwiftValue resolveConflicts:error:]: unrecognized selector sent to instance 0x1d0256680
Everting 正在工作 find ,只有当我有 id 冲突时它才会崩溃。 (在 iphone 8、ios 11.2 上试用)
【问题讨论】:
标签: ios swift database sqlite core-data