- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了这个运行时错误,它在刷新数据或启动时(从服务中获取并保存在 coreData 中)发生了 50% 的时间。我已经查看了关于这个问题的几乎所有解决方案,但其中大部分都在 Obj-C 中,但我是 iOS 的新手并且使用 swift。我有大约 20 个表,所有表都使用相同的上下文。
下面是我的代码:
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
}
这就是我的使用方式,下面只是在数据库中保存数据的一个示例。
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)")
}
}
这是抛出的完整异常:
[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:
最佳答案
错误表明一些 nil
值被插入。
[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:
这个问题可能有多种原因:
MainQueueConcurrencyType
的上下文。请改用 PrivateQueueConcurrencyType
。nil
或某种错误数据(在关系中)。关于ios - 由于 NSManagedObjectContextObjectsDidChangeNotification 导致的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45414169/
我有一个使用 NSPersistentDocument 的 Mac 应用程序。我想在删除对象时收到通知以使用 Core Data 保存此信息。所以我在监听 NSManagedObjectContext
当我向 NSManagedObjectContext 添加新的 NSManagedObject 实例时,如下所示: NSManagedObject *newObject = [NSEntityDesc
我希望有人能帮助我... 我的代码是这样的 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(make
我正在开发一个购物 list 应用程序,在一些情况下,我需要监视对实体的更改,并通过对其他实体进行更改来响应。例如: 当添加新的商店实体时,我需要创建相关的过道实体。 当食品的数量更改为 0 或 >0
NSManagedObjectContextObjectsDidChangeNotification 是否有可能仅在特定实体更改时收到通知? 我想在我的联系信息或头像发生变化时更新我的 View
我想知道一个对象何时被插入到我的 Core Data MOC 中,以及何时将其添加到另一个具有关系的对象中。 因此,我观察 NSManagedObjectContextObjectsDidChange
我在应用程序中使用 CoreData 并依赖于 NSManagedObjectContextObjectsDidChangeNotification。我已经为所有实体创建了 NSManagedObje
我对 NSManagedObjectContextObjectsDidChangeNotification 有一个问题,在插入一个对象然后执行回滚(因此它被删除)之后,关于删除的更改通知被调用两次。这
我遇到了这个运行时错误,它在刷新数据或启动时(从服务中获取并保存在 coreData 中)发生了 50% 的时间。我已经查看了关于这个问题的几乎所有解决方案,但其中大部分都在 Obj-C 中,但我是
在我的许多 UIViewControllers 中,我根据数据状态更新某些控件。例如,我可能在 UITableViewController 上有一个编辑按钮,它应该只在有一个或多个项目时启用。或者我想
我正在我的应用程序中使用 NSManagedObjectContextObjectsDidChangeNotification 通知,我现在已经知道如何使用它了。因为我使用了下面的代码来添加观察者..
是否可以在不再次触发处理程序的情况下更改 NSManagedObjectContextObjectsDidChangeNotification 处理程序中托管对象的属性?我从我们的服务器获取数据,Re
我正在使用 Core Data 编写我的第一个综合应用程序,我想看看跟踪各种对象更改/更新/删除的最佳方法是什么。例如,我有一个 Notes 实体和一个 Location 实体,它们之间是一对一的关系
文档说; NSUpdatedObjectsKey已更新对象集的键。 NSRefreshedObjectsKey在此上下文范围内已刷新但未弄脏的对象集的键。 这到底是什么意思。我只想知道发生了什么变化,
我是一名优秀的程序员,十分优秀!