swift - SwiftUI 应用程序中上下文保存的核心数据 Objective-C 异常
问题描述
当我在 iOS 设备上全新安装 SwiftUI 应用程序时,Core Data 首次尝试保存时出现异常。
我的应用程序委托调用具有此 CloudKit 调用的函数:
iCloud.container.fetchUserRecordID(){ recordID, error in
DispatchQueue.main.async {
if let recordID = recordID{
let context = PersistenceController.shared.container.viewContext
//...
do{
try context.save() //<-- <!!!> Thread 1: hit Objective-C exception <!!!>
}catch{
print("fetchiCloudUserId CD Error")
print(error)
}
}
}
}
我掌握的有关崩溃的唯一其他信息是在 Xcode 中:
我的猜测是,不知何故,Core Data 还没有准备好。我的PersistenceController
样子是这样的:
struct PersistenceController {
static let shared = PersistenceController()
let container: NSPersistentContainer
init(){
container = NSPersistentContainer(name: "Avid")
container.loadPersistentStores(completionHandler: { storeDescription, error in
if let error = error as NSError? {
print("=========\nUnresolved error \(error), \(error.userInfo)")
}
})
}
}
在设备上再次重建我的应用程序后,不会发生异常。有任何想法吗?
解决方案
非常感谢 @CouchDeveloper 让我走上正轨。我不知道我可以让 Xcode 透露更多关于这种模糊异常的信息。我与另一位开发人员交谈并了解到我可以设置一个符号断点来告诉我它崩溃的原因。这就是我所做的。
在断点导航器(Xcode 中的左侧列选项卡之一)中创建一个新的符号断点。
象征: objc_exception_throw
条件:
(BOOL)[(NSString *)[[(id)$arg1 class] className] isEqualToString:@"_NSCoreDataOptimisticLockingException"] == 0
行动:Debugger Command
po $arg1
设置完成后,控制台显示我在设置的唯一字段上存在约束冲突。我能够对此采取行动并修复它。
推荐阅读
- vba - 我无法让我的 Ms Access Form 将信息保存回表格
- sql - 如何使一列依赖于同一表中的另一列
- c - 使用指针复制字符会导致分段错误
- javascript - D3 Graph:按维度对数据进行排序和限制到前十个数据点
- python - IDLE 的第二行告诉我关于 Python 的内容是什么?
- r - R - 无法安装 R 包 'bizdays'
- laravel - 如何跳过 maatwebsite-excel 3.1 中的空白行以在 Laravel 上进行模型导入
- swift - Swift - Optional 对象的集合 .first 返回双重包装的 Optional
- c++ - condition_variable 获取锁的速度低
- reactjs - 从父组件更新子组件反应