Здесь у вас есть семафор 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
}

Ответы на вопрос(1)

Ваш ответ на вопрос