【发布时间】:2017-11-19 02:19:20
【问题描述】:
我在我的应用程序中使用 coreData 来保存多个表(大约 30 个),它工作正常但随机崩溃,出现以下异常:
[error] error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[__NSCFSet addObject:]: attempt to insert nil with userInfo (null)
CoreData: error: Serious application error.
Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[__NSCFSet addObject:]: attempt to insert nil with userInfo (null)
2017-06-16 15:05:56.043490+0500 Sales CRM[619:85792]
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet addObject:]: attempt to insert nil'
*** First throw call stack:
(0x1872c6fe0 0x185d28538 0x1872c6f28 0x1871e316c 0x1895c2028 0x1895c1218 0x1895c97d0 0x1895c019c 0x1001d6888 0x1001bb78c 0x1000a43d8 0x1878d034c 0x1878e8048 0x187d95814 0x187cda770 0x187ccab28 0x187d97bb0 0x100f85a10 0x100f932e8 0x100f89634 0x100f95630 0x100f9539c 0x186387100 0x186386cac)
libc++abi.dylib: terminating with uncaught exception of type NSException
我搜索了很多,但大多数解决方案都在 Objective C 中,甚至我也遵循了一些解决方案,但没有一个有效。
这是我的代码:
public class ServiceCalls : NSManagedObject {
/*
class func getContext () -> NSManagedObjectContext {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let moc = NSManagedObjectContext(concurrencyType:.mainQueueConcurrencyType)
let privateMOC = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
privateMOC.parent = moc
privateMOC.perform({
do {
try privateMOC.save()
} catch {
fatalError("Failure to save context: \(error)")
}
})
return appDelegate.persistentContainer.viewContext
}
*/ // tried this but didn't work as well
class func getContext () -> NSManagedObjectContext {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
return appDelegate.persistentContainer.viewContext
}
上面是我的上下文,每次我从任何数据库保存或获取任何东西时都会调用它。以下是我在 coreData 中的保存方式:
let context = getContext()
let entity = NSEntityDescription.entity(forEntityName: "DoctorsDetail_Tbl", in: context)
let newDoc = NSManagedObject(entity: entity!, insertInto: context)
newDoc.setValue(empid, forKey: "empId")
newDoc.setValue(doctorid, forKey: "docId")
//save the object
do {
try context.save()
print("saved Doctors in Database yayy!")
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
【问题讨论】:
-
如果您找到解决方案,则标记为正确..为其他用户提供更好的指导。
-
@vaibhav 解决方案无效,仍然遇到同样的问题!
标签: ios swift exception core-data runtime-error