Я использую MagicalRecord для управления моими основными данными. Мое приложение часто получает фрагменты данных, которые требуют повторения, затем индивидуально добавляются в хранилище в виде записей и сохраняются. Я ввел этот код в NSOperation. Это выглядит примерно так:MagicalRecord с NSOperation вызывает проблемы с сохранением
class AddIncomingMessageOperation: NSOperation {
override func main() {
let context = NSManagedObjectContext.MR_context()
self.message = Message.createMessage(
json: self.messageJSON,
context: context)
if self.message != nil {
context.MR_saveToPersistentStoreAndWait()
}
}
}
Запуск этого на NSOperationQueue.mainQueue
, кажется, работает без проблем, кроме задерживая UI. Но мой следующий шаг - запустить все эти операции в своей собственной очереди фоновой работы. Добавляя их в этот NSOperationQueue и запуская их, вы получаете некоторые смешанные данные.
Что я имею в виду - моя функция createMessage проверяет существующий объект беседы и добавляет его в разговор, если он существует, или создает его, если это не так. Поэтому он требует знания того, что уже существует в магазине. Кажется, что происходит с тем, как они работают в фоновом режиме, это то, что они создают цепочки, которые только что были созданы в другой операции.
Я могу решить все это, установив operationQueue.maxConcurrentOperationCount = 1
, но это, очевидно, замедляет все.