首页 > 解决方案 > 存储实体时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 保存方法之前查看某些值是否已损坏。但事实并非如此,所有值都是正确的,并且当我使用注释的属性或关系属性行之一持久保存数据时,所有值都正确保存和获取。

这根本没有意义。我完全无法理解为什么它会崩溃以及为什么它会在评论一行时起作用。

标签: swiftxcodesqlitecore-datapersistence

解决方案


推荐阅读