Как предотвратить, чтобы дочерний контекст управляемого объекта остановил приложение? - PullRequest
0 голосов
/ 28 июня 2018

Я хотел бы использовать childContext (NSManagedObjectContext) для подробного просмотра, где пользователь может редактировать параметры модели. Идея состоит в том, что если пользователь не сохранит подробный вид, я могу просто отменить любые изменения. Если они сохранят свои изменения, я могу распространить изменения в parentContext.

То, что происходит, - это то, что 100% ЦП расходуется, когда я выполняю код, который создает childContext и копию NSManagedObject, используя следующий код.

Приложение прекрасно работает без подхода childContext, но я также хочу наблюдать за изменениями в childContext, чтобы обновлять пользовательский интерфейс подробного представления. Поэтому мне нужен childContext, плюс он должен работать, поэтому я должен что-то упустить.

Может кто-нибудь посоветовать, почему это происходит и что с этим делать?

    DispatchQueue.main.async {
        let childContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
        childContext.parent = childContext
        let childEntry = childContext.object(with: foodEntry.objectID) as? FoodEntry
        addFoodVC.foodEntry = childEntry
        addFoodVC.context = childContext
        self.navigationController?.pushViewController(addFoodVC, animated: true)
    }

1 Ответ

0 голосов
/ 28 июня 2018

Я предполагаю, что эта строка childContext.parent = childContext вызывает бесконечный цикл рекурсии, когда вы пытаетесь получить объект.

Попробуйте установить родительский элемент с основным контекстом приложения вместо самого дочернего контекста.

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