Help us understand the problem. What is going on with this article?

Swiftのデバッグにdumpが使える

More than 3 years have passed since last update.

Swiftでクラスのインスタンスの中身を確認しようとしたとき、
こんな経験はありませんか?

class Member {
    let name: String
    let age: Int
    let account: Account

    init(name: String, age: Int, account: Account) {
        self.name = name
        self.age = age
        self.account = account
    }
}

let yoshio: Member = Member(name: "yoshio", age: 62, account: account)

// 出力!
print(yoshio)

出力結果:

LLDB 2016-10-15 18.01.01.png

うん。知ってる

そんな中、最近@shapesさんのツイートで、dump関数がSwiftでも使えることを知ったので、少しだけ掘り下げてご紹介します。

dumpメソッドを使うメリット

ビルトイン関数のdump(value: T)を使うと、
クラスのインスタンスがインデント付きで確認できて便利です。

let yoshio: Member = Member(name: "yoshio", age: 62, account: account)
dump(yoshio)

出力結果:

 LLDB2 2016-10-15 18.07.40.png

ちゃんと、yoshioオブジェクト内のaccountオブジェクト(構造体)まで、階層になって見れてます

printとdumpを比較してみた

他にもdumpを使ったほうが便利なケースはないか検証してみました

辞書

let dict: [String: String] = ["職業": "エンジニア", "趣味": "ゲーム"]
print(dict)
print("-------")
dump(dict)

dict.png

printのほうがkey: valueの形になっているので、見やすい

配列

let primeNumber: [Int] = [2, 3, 5, 7, 11, 13, 17, 19]

print(primeNumber)
print("-------")
dump(primeNumber)

array.png

どっちでもいい..。
ただ、dumpだと配列の個数まで見れるので、ケースによっては便利かも。あと多重配列のときとか

タプル

let tuple: (String, Int) = ("hiroshi", 29)
print("-------")
print(tuple)
dump(tuple)

tuple.png

どっちでもいい..。

構造体

let account: Account = Account(id: 001, email: "hiroshi@example.com")
print("-------")
print(account)
dump(account)

struct.png

どっちでもいい

ためしに..

ViewControllerのself.view.frameを出力したところ

print(self.view.frame)
dump(self.view.frame)

CGRect.png

d..dumpのほうが見やすい!

printの場合、値だけが出力されますが、
dumpだとCGRect内のorigin: CGPointsize: CGSizeプロパティまで掘って見やすく表示してくれるようです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした