首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于导致的运行时错误

由于导致的运行时错误
EN

Stack Overflow用户
提问于 2017-07-31 11:03:46
回答 1查看 455关注 0票数 2

我被这个运行时错误困住了,这个错误在刷新数据或启动(从服务获取并在coreData中保存)时发生了50%的时间。在这个问题上,我已经看过了几乎所有的解决方案,但是大多数都是在Obj中,但是我对iOS还是新手,并且使用的很迅速。我有大约20张桌子,它们都使用相同的上下文。

下面是我的代码:

代码语言:javascript
运行
复制
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

     class func getContext () -> NSManagedObjectContext {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        return appDelegate.persistentContainer.viewContext
    }

这就是我使用它的方式,下面只是在数据库中保存数据的一个例子。

代码语言:javascript
运行
复制
class func SaveCustomerContacts(name : String,id : String){

let context = getContext()
let entity =  NSEntityDescription.entity(forEntityName: "AllCustomerContacts_Tbl", in: context)
let newDoc = NSManagedObject(entity: entity!, insertInto: context)

newDoc.setValue(name, forKey: "contactName")
newDoc.setValue(id, forKey: "id") 



    //save the object
do {
    try context.save()
    print("saved Customer contacts 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)")
}
}

这是正在引发的完全异常:

代码语言:javascript
运行
复制
    [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-07-31 16:09:20.908 Sales CRM[5846:202190] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet addObject:]: attempt to insert nil'
*** First throw call stack:
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-01 06:57:52

此错误指示正在插入某些nil值。

代码语言:javascript
运行
复制
[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-07-31 16:09:20.908 Sales CRM[5846:202190] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet addObject:]: attempt to insert nil'
*** First throw call stack:

这一问题可能有若干原因:

  1. 您正在使用多个上下文,并且没有正确地处理它们。
  2. 您正试图在后台保存具有并发类型MainQueueConcurrencyType的上下文。使用PrivateQueueConcurrencyType代替。
  3. 保存的值是nil或某种错误数据(在关系中)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45414169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档