Как сравнить результат с .success в swift

#swift

#swift

Вопрос:

Из https://www.hackingwithswift.com/articles/161/how-to-use-result-in-swift , в нем есть пример о том, как использовать «Результат в swift», например:

 fetchUnreadCount1(from: "https://www.hackingwithswift.com") { result in
    switch result {
    case .success(let count):
        print("(count) unread messages.")
    case .failure(let error):
        print(error.localizedDescription)
    }
}
  

мой вопрос в том, какой из приведенных выше вариантов переключения работает, почему это не компилируется:

  if (result == .success) {
     print ("Success")
 }
  

Я получаю сообщение об ошибке, в котором говорится, что не удается преобразовать значение типа

‘Результат<пустота, ошибка>’ с ожидаемым типом аргумента ‘DispatchTimeoutResult’

Комментарии:

1. Я не уверен в причине ошибки, но для проверки условия с перечислением, имеющим связанное значение, вы должны использовать switch.

2. Вы можете использовать if case в этой ситуации, if case .success(let count) = result { а затем использовать count переменную в if предложении

Ответ №1:

Вы можете использовать сопоставление с образцом в if инструкции с case таким образом:

 if case .success = result {
    print("Success")
}