Решающая операция уже запускает проблему для 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

0 ответов

Другие вопросы по тегам