Как мне объявить замыкание, которое извлекает записи из CloudKit, итеративно вызывает себя до тех пор, пока все записи не будут извлечены?Следующий код делает это, за исключением того, что я получаю сообщение об ошибке:
Переменная, используемая в ее собственном начальном значении
в строке, в которой я назначаю свойству queryCompletionBlock замыкание свойствомэто же имя операции запроса в объявлении самого замыкания.По сути, я получаю сообщение об ошибке, потому что я вызываю замыкание внутри себя в объявлении замыкания до объявления замыкания.
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: DatabaseNameStrings.recordTypeEntry, predicate: predicate)
let queryOperation = CKQueryOperation(query: query)
queryOperation.desiredKeys = [DatabaseNameStrings.fieldNameCreatedAt, DatabaseNameStrings.fieldNameText]
let queryCompletionBlock = {
(cursor: CKQueryOperation.Cursor?, error: Error?) in
if let error = error {
print(error.localizedDescription)
} else if let cursor = cursor {
let queryOperation = CKQueryOperation(cursor: cursor)
queryOperation.desiredKeys = [DatabaseNameStrings.fieldNameCreatedAt, DatabaseNameStrings.fieldNameText]
queryOperation.queryCompletionBlock = queryCompletionBlock // Error message "Variable used within its own initial value"
queryOperationQueue.addOperation(queryOperation)
}
}
queryOperation.queryCompletionBlock = queryCompletionBlock
queryOperationQueue.addOperation(queryOperation)