はじめに
URLComponentsの使い方は他の記事でも紹介されていますが、基本的に暗黙的アンラップ(!)を使用しています。
(参考:どこよりも分かりやすいSwiftの"?"と"!")
もしURLにnilが入るとアプリがクラッシュしてしまうのでguradで安全にアンラップする方法を紹介します。
URLsessionの使い方は下記の記事を参考にしてみてください。
(参考URLsessionを用いたHTTPリクエストの方法)
guradでアンラップする方法
まず暗黙的アンラップを用いている方法です。(良くないパターン)
var urlComponents = URLComponents(string: "https://hogehoge.hoge")! // "!"を使用
urlComponents.queryItems = [
URLQueryItem(name: "email", value: "hoge@hoge.com"),
URLQueryItem(name: "username", value: "hogehoge")
]
var request = URLRequest(url: urlComponents.url!) // "!"を使用
続いてguradで安全にアンラップした場合です。
guard var components = URLComponents(string: "https://hogehoge.hoge") else { return nil } // guardでアンラップ。returnでnilを返す。
urlComponents.queryItems = [
URLQueryItem(name: "email", value: "hoge@hoge.com"),
URLQueryItem(name: "username", value: "hogehoge")
]
guard let url = urlComponents.url else { return nil } // 一行追加してguradでアンラップ。同じくreturnでnilを返す。
var request = URLRequest(url: url) // urlを安全にアンラップできる。
おわりに
URLsessionに限らず、アプリがクラッシュしないように基本的には"!"を使わずにguradなどでアンラップします。
しかし、returnで何を返すかが変わったり、そもそもguardを使わなかったりと型によっても変わってくるので、今回はURLComponentsについて紹介しました。