Сбой Coredata при сохранении сущности - PullRequest
0 голосов
/ 19 сентября 2019

Я пытался использовать 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Сохранить метод.Но это был не тот случай, все значения были правильными и были сохранены и извлечены правильно, когда я сохранил данные с одним из свойств или строк с указанием связи.

Это не имеет никакого смысла вообще.Я полностью теряюсь в понимании того, почему это дает сбой и почему это работает, если комментарий строка.

...