С помощью Swift правильный способ обработки ошибок и извлечения данных из методов, которые могут вызывать ошибки, объясняется в разделе Error Handling «Язык программирования Swift».
Поэтому, в соответствии с вашими потребностями, вы можете выбрать один из трех следующих шаблонов, чтобы решить вашу проблему.
1. Получение данных и обработка ошибок с помощью do-catch
и try
ключевого слова
Вы используете do-catch
заявления для обработки ошибок, запустив блок кода. Если ошибка вызывается кодом в предложении do
, она сопоставляется с предложениями catch
, чтобы определить, какая из них может обрабатывать ошибку.
Использование:
let plistUrl = Bundle.main().urlForResource("Books", withExtension: "plist")!
let plistData: Data?
do {
plistData = try Data(contentsOf: plistUrl)
} catch {
print(error as NSError)
plistData = nil
}
print(plistData)
2. Получение данных и преобразования ошибок в дополнительных значений с помощью ключевого слова try?
Вы используете try?
обрабатывать ошибку, превращая его в дополнительный стоимость. Если при вычислении выражения try?
возникает ошибка, значение выражения равно нулю.
Использование:
let plistUrl = Bundle.main().urlForResource("Books", withExtension: "plist")!
guard let plistData = try? Data(contentsOf: plistUrl) else {
return
}
print(plistData)
3. Получение данных и распространение отключаем ошибок с использованием ключевого слова try!
Иногда вы знаете функцию метательный или метод не будет, на самом деле, вывести ошибку во время выполнения. В этих случаях вы можете написать try!
перед выражением, чтобы отключить распространение ошибок и завернуть вызов в заявлении о запуске, чтобы никакая ошибка не была выбрана. Если на самом деле возникает ошибка, вы получите ошибку времени выполнения.
Использование:
let plistUrl = Bundle.main().urlForResource("Books", withExtension: "plist")!
let plistData = try! Data(contentsOf: plistUrl)
print(plistData)
Это сделал трюк! Я знал, что это должно быть чем-то глупо простым. –