#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")
}