Решающая операция уже запускает проблему для CKOperation на CloudKit
Иногда, когда я получаю частные изменения в базе данных CloudKit, мое приложение завершается со следующей ошибкой:
Terminating app due to uncaught exception 'CKException', reason: 'Operation 2285B94C45817CB2 is already running.'
Чтобы избежать этой проблемы, я создал специальную переменную var isFetching: Bool
и установите для него значение true, до начала выборки (до всех вызовов операции (добавления)) и значение false после завершения выборки. Я вызываю метод fetchDataFromCloudKit(), только если isFetching
ложно Я думаю, что это плохое решение, потому что иногда я все еще получаю ту же "уже запущенную" ошибку, может быть, иногда isFetching
не установлен должным образом или, возможно, есть другие проблемы с сетью, которые вызвали это. В моем приложении также есть метод resumeLongLiveOperationIfPossible() для возобновления долгоживущих операций CloudKit. Я также слышал, что выборку из CloudKit можно выполнить в очереди, но я не уверен, что это хорошая идея, и я не знаю, как правильно реализовать эту технику с CloudKit.
Каков наилучший способ решить 'Operation is already running.'
ошибка при работе с CloudKit при извлечении или сохранении в базе данных CloudKit?
Я использую Swift 4.2, Xcode 10