Здесь у вас есть семафор GCD, который ожидает завершения асинхронной операции.
аюсь объявить вычисляемое свойство, которое состоит из блока, выполняемого в фоновом потоке. Поэтому, когда я обращаюсь к этому свойству, оно равно nil, так как вычисление возвращает результат, когда оно не готово. Как лучше это исправить? Спасибо!
enum Result<T> {
case error(error: Error)
case success(data: T)
}
var userID: Result<CKRecordID>? {
var result: Result<CKRecordID>? = nil
container.fetchUserRecordID { recordID, error in
if let error = error { result = .error(error: error) }
if let recordID = recordID { result = .success(data: recordID) }
}
return result
}