我试图在删除所有数据或在1个实体中保存新数据后保存托管上下文对象,但它导致应用程序在大约1%的情况下崩溃,但工作正常99%。
编辑:我无法调试,因为我在测试应用时没有发生崩溃,我们在应用中内置了崩溃报告工具,并报告了这些崩溃。
日志:
0 libobjc.A.dylib 0x237e3ae6 objc_msgSend + 5
1 CoreData 0x25762193 -[NSManagedObject(_NSInternalMethods) _validatePropertiesWithError:] + 310
2 CoreData 0x25762039 -[NSManagedObject(_NSInternalMethods) _validateForSave:] + 120
3 CoreData 0x25761f97 -[NSManagedObject validateForInsert:] + 86
4 CoreData 0x257615af -[NSManagedObjectContext(_NSInternalAdditions) _validateObjects:forOperation:error:exhaustive:forSave:] + 2362
5 CoreData 0x25760b3b -[NSManagedObjectContext(_NSInternalAdditions) _validateChangesForSave:] + 154
6 CoreData 0x25760867 -[NSManagedObjectContext(_NSInternalChangeProcessing) _prepareForPushChanges:] + 270
7 CoreData 0x25754be1 -[NSManagedObjectContext save:] + 420
这是我的乐趣:
if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
let managedContext = appDelegate.managedObjectContext
let myFetchRequest = NSFetchRequest(entityName: "MyEntity")
do {
if let myResults = try managedContext.executeFetchRequest(myFetchRequest) as? [MyEntity] {
for myObject in myResults {
managedContext.deleteObject(myObject)
}
}
try managedContext.save() // Most crashes at this line
managedContext.reset() // Some crashes at this line
} catch {
}
}
婴儿这些随机崩溃发生在应用程序的多个位置,其中大多数是在尝试保存托管上下文对象时,还有一些是在执行managedcontext.reset()时。
所有崩溃都发生在iOS 9上。
PS-这是我第一次开发iOS开发和核心数据。我主要使用AppDelegate中Xcode添加的代码来处理Core Data。我只添加了一行:
let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]
do {
try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: mOptions)
}