swift - 存储实体时Coredata崩溃
问题描述
我一直在尝试使用 CoreData,我正面临这种情况。
创建我的.xcdatamodeld后
我开始单独测试所有实体,创建对象,然后保存到 Coredata,取回它们并打印该特定实体的所有存储值。一切进展顺利。所以我创建了一个点,我将获取所有特定的 ManagedObjects 实体并将它们设置在CompletedGameResultManagedObject
我在这个特定模型中的中心点上。
这是 CompletedGameResultManagedObject 方法,用于在保存到 CoreData 之前设置值
func managedObject(from context: NSManagedObjectContext){
let entity = NSEntityDescription.entity(forEntityName: String(describing: CompletedGameResultManagedObject.self), in: context)
let newData = NSManagedObject(entity: entity!, insertInto: context) as! CompletedGameResultManagedObject
//Relationships
newData.gamePlayedInformation = gamePlayedInformation.managedObject(from: context)
newData.environmentInformation = environmentInformation.managedObject(from: context)
newData.gameResultData = result.managedObject(from: context)
//Entity Properties
newData.studentIdentifier = studentIdentifier
newData.tutorIdentifier = tutorIdentifier
}
该方法,CoreData 的持久性,使用此错误日志使我的应用程序崩溃
如果出于某种原因我去评论任何newData
归属,这已经解决了。将任何一行转换为注释,使我的 CoreData 工作。基本上,如果我评论
//newData.gamePlayedInformation = gamePlayedInformation.managedObject(from: context)
CoreData 将能够保存CompletedGameResultManagedObject
.
我尝试对每一行进行注释和取消注释,以查看问题是否出自其中之一,并且在我至少注释了一行的所有情况下,它都能顺利运行。
我添加了这些参数来帮助调试:
-com.apple.CoreData.SQLDebug 1
-com.apple.CoreData.ConcurrencyDebug 1
-com.apple.CoreData.MigrationDebug 1
我仍然无法理解发生了什么。
尝试在调用 CoreData 保存方法之前查看某些值是否已损坏。但事实并非如此,所有值都是正确的,并且当我使用注释的属性或关系属性行之一持久保存数据时,所有值都正确保存和获取。
这根本没有意义。我完全无法理解为什么它会崩溃以及为什么它会在评论一行时起作用。
解决方案
推荐阅读
- python - mongodb如何保存注册用户数?
- c# - C# UDP 套接字的 ReceiveBufferSize 是否适用于数据报的大小或消息队列的大小?
- c# - MVC无法上传文件
- java - Keycloak:订阅诸如创建用户之类的事件以触发 Web 服务
- sql - 将一个表中的值与另一表中具有相同属性的值的平均值计算进行比较
- utf-8 - UTF-8 直接存储代码点的基本原理是什么?
- javascript - 防止在完全填充之前渲染 fabric-js 画布
- python - 使用 CountVectorizer 从列表列创建词频数据帧时运行时崩溃
- python - 如何获得预测未来的后续(下一个)值?
- java - Android在比较两个列表变量后在列表中获取错误值