LoginSignup
0
0

More than 3 years have passed since last update.

URLsessionのURLComponentsをgurad letでアンラップする方法

Last updated at Posted at 2020-06-02

はじめに

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について紹介しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0