У меня есть CKQueryOperation
, работающий с тысячей записей, поэтому мне нужно сделать операцию несколько раз. Я пытался изменить курсор и добавить операцию, как в этом коде:Выполнение CKQueryOperation несколько раз с новым курсором
let queryOperation = CKQueryOperation(query: query)
queryOperation.recordFetchedBlock = { (rule: CKRecord) in
print(rule)
}
queryOperation.database = publicDB
queryOperation.queryCompletionBlock = { (cursor : CKQueryCursor?, error : NSError?) in
if error != nil {
print(error?.localizedFailureReason)
} else {
if cursor != nil { // The cursor is not nil thus we still have some records to download
queryOperation.cursor = cursor
queue.addOperation(queryOperation)
} else {
print("Done")
}
}
}
// Creation of the dependent operation secondQueryOperation
queue.addOperations([queryOperation, secondQueryOperation], waitUntilFinished: true)
При запуске он выходит из строя и возвращает [NSOperationQueue addOperation:]: operation is executing and cannot be enqueued
. Что я мог сделать? После этого у меня есть другие операции, которые зависят от этого запроса. Поэтому мне нужно, чтобы финал попал правильно, прежде чем запускать другие CKOperation
.
Как вы инициализируете secondQueryOperation? – Sandeep
Нормальная инициализация 'NSQueryOperation', а затем' secondQueryOperation.addDependency (queryOperation) ' –