У меня NSOperationQueue
установлено на NSOperationQueueDefaultMaxConcurrentOperationCount
. Он заполнен NSOperation
объектами (пока ничего странного). Я создал подкласс NSOperation
для выполнения некоторых фоновых задач.
- Скачать данные из интернета.
- Проанализируйте данные, чтобы я мог их прочитать.
Создайте NSManagedObject:
[NSEntityDescription insertNewObjectForEntityForName:@"Channel" inManagedObjectContext:context];
Сохраните его с контекстом.
[сохранение управляемого контекста объекта: и ошибка]
Мне нравится, когда все это происходит в фоновом режиме, поэтому пользовательский интерфейс не блокируется. Я прочитал эта статья о параллелизме с основными данными, насколько я понял. Лучшим способом было бы создать новый NSManagedObjectContext
в каждом NSOperation
, но совместно использовать один и тот же координатор постоянного хранилища.
Это легко сделать, однако, когда дело доходит до сохранения контекста, в документации говорится, что это может привести к ошибкам. Итак, мой вопрос заключается в следующем:
Если в NSOperationQueue выполняются разные операции, могут ли эти операции мешать друг другу при сохранении контекста управляемого объекта? Или он ожидает выполнения следующей операции до завершения сохранения?
Могу ли я безопасно сохранить контекст в NSOperation? Или это действительно плохая практика?
Я надеюсь, что кто-то может пролить свет на этот вопрос, потому что я действительно застрял в данный момент.