Пакетная синхронизация CoreData при загрузке отношений не сохраняется - PullRequest
0 голосов
/ 22 марта 2019

Я начинаю с этого в AppDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    CoreDataManager.shared.managedContext = self.persistentContainer.viewContext
    CoreDataManager.shared.model = self.persistentContainer.managedObjectModel

    SessionManager.shared.getCountries(completion: {
        SessionManager.shared.getStates(completion: {
            CoreDataManager.shared.updateCountryStateRelationships()
            CoreDataManager.shared.save()
        })
    })

    return true
}

Тогда эти методы, наконец, заканчиваются здесь ...

struct CoreDataManager {

    var countryCache = [String : NSManagedObjectID()

    func addCountry(name: String) {

        var country = insertEntity(with: "Country") as? Country
        country?.name = name
        ...
        ...

        countryCache[code] = country!.objectID
    }

    func addState(name: String) {

        var state = insertEntity(with: "State") as? State
        state?.name = name
        ...
        ...
    }

    func updateCountryStateRelationships() {
        let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "State")
        let states = getAllManagedObjects(fetchRequest: fetchRequest) as! [State]
        for state in states {
            if let countryID = countryCache[state.countryCode!],
            let country = managedContext.object(with: countryID) as? Country {
                state.country = country
                country.addToStates(state)
            }
        }
    }

Все страны выбраны, и каждая из них вставлена ​​вконтекст.Идентификатор управляемого объекта каждой страны сохраняется в словаре кэша.Когда все страны добавлены, контекст сохраняется.

Все состояния выбираются, и каждое из них вставляется в контекст.Когда все штаты добавлены, контекст сохраняется.

Затем создаются отношения, в каждой стране может быть много штатов, а у штатов одна страна.

Страны и штаты сохраняют штраф,отношения выглядят так, как будто они созданы должным образом, но когда в конце вызывается функция сохранения, я получаю ошибку основных данных.

NSLocalizedDescription=The operation couldn’t be completed. (Cocoa error 1550.), NSValidationErrorKey=country, NSValidationErrorShouldAttemptRecoveryKey=true}

Что при исследовании, похоже, указывает на то, что у меня нетне удовлетворены ли отношения должным образом при сохранении?Что необязательное свойство данных ядра - ноль?Но когда я использую точки прерывания в отношениях, кажется, что все настроено нормально, и ничто не заканчивается ничем.

Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи.Очень ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...