[Swift]エラー処理
ガイドルート-iOSプログラミングのSwiftベース
1.エラー表示
エラーは、
enum LocationManagerError: Error {
case authorizationDenied
case coordinateError
}
2.放出関数のエラー
func requestLocation(completion: @escaping (_ coordinate: CLLocationCoordinate2D) -> ()) throws {
locationManager.delegate = self
guard CLLocationManager.locationServicesEnabled() else {
throw LocationManagerError.authorizationDenied
}
locationManager.requestWhenInUseAuthorization()
locationManager.requestLocation()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
guard let coordinate = locationManager.location?.coordinate else {
throw LocationManagerError.coordinateError
}
completion(coordinate)
}
3.エラー処理
do-catch
do {
try locationManger.requestLocation(){ coordinate in
currentLocationViewModel.convertToAddress(latitude: coordinate.latitude, longtitude: coordinate.longitude, completion: {
let locationName = $0
fineDustViewModel.loadFineDust(latitude: coordinate.latitude, longtitude: coordinate.longitude, completion: {
let entry = simpleEntry(currentDate: currentDate,
locationName: locationName,
fineDust: $0.fineDust,
ultraFineDust: $0.ultraFineDust,
configuration: configuration)
let refreshDate = Calendar.current.date(byAdding: .minute, value: 30, to: currentDate)!
let timeline = Timeline(entries: [entry], policy: .after(refreshDate))
completion(timeline)
})
})
}
} catch {
let entry = simpleEntry(currentDate: currentDate,
locationName: "오류",
fineDust: fineDustViewModel.fineDust("-"),
ultraFineDust: fineDustViewModel.ultraFineDust("-"),
configuration: configuration)
let refreshDate = Calendar.current.date(byAdding: .second, value: 10, to: currentDate)!
let timeline = Timeline(entries: [entry], policy: .after(refreshDate))
completion(timeline)
}
}
try?
try!
SWIFT 3.0のthrowsとrethrowsについて...
rethrows
defer构文の理解
defer
現在のコードブロックから離れる前に、実行しなければならないコードを記述し、コードがどうしてもそのブロックから離れても完了しなければならないタスクを実行させることを指す.
func test() {
defer {
print("실행 2")
}
print("실행 1")
}
// 실행 1
// 실행 2
Reference
この問題について([Swift]エラー処理), 我々は、より多くの情報をここで見つけました https://velog.io/@sainkr/Swift-오류-처리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol