2015-07-08 2 views
0

Я пытаюсь извлечь текущий идентификатор пользователя из CloudKit, используя fetchUserRecordIDWithCompletionHandler, но когда я запускаю код, обработчик завершения пропускается.CloudKit fetchUserRecordIDWithCompletionHandler код завершения не звонит?

let container = CKContainer.defaultContainer() 
let publicDatabase = container.publicCloudDatabase 

var userID: CKRecordID! 

container.fetchUserRecordIDWithCompletionHandler({ recordID, error in 
    if error == nil { 
     userID = recordID 

    } else { 
     NSLog("\(error.localizedDescription)") 
    } 
}) 


let predicate = NSPredicate(format: "personID = \(userID)") 

let query = CKQuery(recordType: "Person", predicate: predicate) 

Из-за этого, значение остается идентификатор пользователя nil, и поэтому запрос выдает исключения из-за него.

ответ

2

Обработчик завершения будет работать только после завершения запроса выборки, который будет происходить асинхронно. Таким образом, вы не можете использовать результат запроса на выборку сразу после вызова. Переместите этот запрос в обработчик завершения на другую часть вашего кода, которую можно вызвать или иначе вызвать из обработчика.

+0

Большое спасибо, это решило мою проблему! – michelle0001

Смежные вопросы