Ios Exc\u错误\u访问NSManagedObjectContext(\u内部添加)\u处理对象
我正在开发swift应用程序,其中包括核心数据和Alamofire。我几乎一天都在努力解决这个问题 下面是应用程序崩溃后的屏幕截图,它是随机发生的。我知道这些信息可能还不够,如果有人需要更多详细信息,请提及。至少指导我跟踪这个问题 编辑: 该方法重新加载tableview函数后,其主要崩溃Ios Exc\u错误\u访问NSManagedObjectContext(\u内部添加)\u处理对象,ios,swift,core-data,xcode8,exc-bad-access,Ios,Swift,Core Data,Xcode8,Exc Bad Access,我正在开发swift应用程序,其中包括核心数据和Alamofire。我几乎一天都在努力解决这个问题 下面是应用程序崩溃后的屏幕截图,它是随机发生的。我知道这些信息可能还不够,如果有人需要更多详细信息,请提及。至少指导我跟踪这个问题 编辑: 该方法重新加载tableview函数后,其主要崩溃 func reloadTable(){ print("reloadTable called") DispatchQueue.main.async { let appDel:A
func reloadTable(){
print("reloadTable called")
DispatchQueue.main.async {
let appDel:AppDelegate = (UIApplication.shared.delegate as! AppDelegate)
let context:NSManagedObjectContext = appDel.managedObjectContext
let request = NSFetchRequest < NSFetchRequestResult>(entityName: "Jars")
request.returnsObjectsAsFaults = false;
let sortDescriptor = NSSortDescriptor(key: "order", ascending: true)
let sortDescriptors = [sortDescriptor]
request.sortDescriptors = sortDescriptors
self.navigationController!.view.backgroundColor = UIColor.white
self.jarlist = NSArray()
do{
self.jarlist = try context.fetch(request) as NSArray
print("Check 11")
}catch{
}
self.ArrayPopulator("")
print("Check 12")
self.JarsTable.reloadData()
print("Check 13")
}
}
func重载表(){
打印(“已调用的重载表”)
DispatchQueue.main.async{
让appDel:AppDelegate=(UIApplication.shared.delegate为!AppDelegate)
let context:NSManagedObjectContext=appDel.managedObjectContext
let request=NSFetchRequest(entityName:“Jars”)
request.returnsObjectsAsFaults=false;
让sortDescriptor=NSSortDescriptor(键:“顺序”,升序:true)
让sortDescriptor=[sortDescriptor]
request.sortDescriptors=sortDescriptors
self.navigationController!.view.backgroundColor=UIColor.white
self.jarlist=NSArray()
做{
self.jarlist=try context.fetch(请求)作为NSArray
打印(“支票11”)
}抓住{
}
self.ArrayPopulator(“”)
打印(“支票12”)
self.JarsTable.reloadData()
打印(“支票13”)
}
}
因此,查看堆栈跟踪,看起来您正在线程2上使用托管上下文
不能在多个线程上使用NSManagedObjectContext
,您必须为要在其上使用它的每个线程(队列)使用一个。只有在线程之间传递对象标识符才是安全的
您能否再次检查您要在NSOperation
中处理的对象是否在您试图删除它们的同一操作队列中检索到
您将只希望将ID传递给操作,并使其从自己的托管对象上下文中重新水化它们
编辑:仔细查看这似乎是由CoreData管理的内部队列,因此这可能不是您的工作?显示应用程序崩溃的代码。您可以设置异常断点。您的核心数据堆栈是什么样子的?您正在使用NSPersistentContainer吗?我没有使用NSPersistentContainer。