在 Xcode 6.3 Beta中升级到 Swift 1.2后,我现在执行fetchRequest的所有代码都会导致EXC_BAD_ACCESS 这是一个示例,我根据实体名称删除实体: func deleteAllEntities(entityName: String){ println(entityName) var err
这是一个示例,我根据实体名称删除实体:
func deleteAllEntities(entityName: String) { println(entityName) var error: NSError? = nil let allEntityFetchRequest = NSFetchRequest(entityName: entityName) if let savedObjects = self.managedObjectContext?.executeFetchRequest(allEntityFetchRequest, error: &error) as? [NSManagedObject] { for object in savedObjects { self.managedObjectContext?.deleteObject(object as NSManagedObject) } // save changes persistent store if !(self.managedObjectContext!.save(&error)) { println("ERROR: Error saving model: \(error?.localizedDescription)") } } else { println("ERROR: Fetch error: \(error!.localizedDescription)") } }
另一个例子是:
var error: NSError? = nil if let venueObjects = self.managedObjectContext?.executeFetchRequest(relatedVenuesEntityFetchRequest, error: &error) as? [NSManagedObject] { // do stuff }
在发行说明中,我没有看到Swift 1.1和1.2之间存在任何差异.有什么想法吗? Fetch请求返回[AnyObject] !,但是如果我尝试在特定实体类型上运行这些获取请求,它仍然会发生.
崩溃的确切原因:
objc发布不良访问权限
崩溃发生在“对于savedObjects中的对象”行.调试器没有提供太多信息.
我已将问题缩小到编译器优化错误.释放模式默认为“最快[-O]”.将其转为’无 – [Onone],可以解决问题.
由于除了Apple以外的任何人都无法修复此问题,因此我将此标记为答案.我提出了雷达 – 19843889.