こんにちは!今回は、dump()というデバックにモデルのデータ構造を一目で解るようにしてくれる便利な関数について解説します!
目次
- dump()について
- dump()の具体的な使用例
- さいごに
dump()について
まず、dump()についてですが、Apple公式のリファレンスからは、以下のように説明されています。
func dump(_:name:indent:maxDepth:maxItems:)
https://developer.apple.com/documentation/swift/dump(_:name:indent:maxdepth:maxitems:)/
Dumps the given object’s contents using its mirror to standard output.
与えられたオブジェクトをミラーを使って標準出力をする
直訳だとよくわかりませんが、要するにオブジェクトをデバックに出力してくれるということが言いたいみたいです!
ちなみに、dumpという英語の意味の1つに、『〔中身を〕放出する』というものがありここからきているのではないかと考えています!(あくまでも推測ですが...笑)
dump()の具体的な使用例
ここまで読まれた方の中には、以下のように思う方もいるのではないでしょうか?
デバックに表示してくれるだけなら、print()でもいいじゃないか!!dump()を使うことで何がどう違うんだよ?
そこで、以下でprint()とdump()の違いについて解説します!
事前準備で以下のようにUser型を作成して、デバックでUser型に入っているパラメータが何であるのかを確かめたいというシーンを想定します!
/// 事前準備
struct User {
var id: String
var name: String
var age: Int
var likeSauna: String
}
let user = User(id: "nfosdfoansgosfjdnsao", name: "しょ〜ひ〜", age: 24, likeSauna: "改良湯")
そして、print()を使ってデバックに反映させた場合とdump()を使用した時を比較してみます!
/// print
print(user)
----------------------------
デバックエリア
[プロジェクト名.User(id: "nfosdfoansgosfjdnsao", name: "しょ〜ひ〜", age: 24, likeSauna: "改良湯")]
/// dump
dump(user)
----------------------------
デバックエリア
▿ 1 element
▿ プロジェクト名.User
- id: "nfosdfoansgosfjdnsao"
- name: "しょ〜ひ〜"
- age: 24
- likeSauna: "改良湯"
バージョン等により多少、誤差はありかもしれませんが、dump()を使用することで上記のように、パラメータが階層になって表示されます!
情報を少なめにしたUser型を用意しましたが、もっと情報が増えても一目でパラメータを確認することができるので、効率よく実装できますよね!
さいごに
いかがでしたか?dump()を使用することで、APIで返ってきたパラメータの値をデバックで瞬時に確認することができるため、使ってみる価値は大有りです!!
僕自身は、print()を利用して地道にしパラメータを探していましたが、dump()を使用し出してからパラメータがあるかを確認する無駄な時間をなくすことができました!
今後も、技術関連の記事を書いていきますので、チェックしていただけると幸いです!