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)
出力結果:
うん。知ってる
そんな中、最近@shapesさんのツイートで、dump関数がSwiftでも使えることを知ったので、少しだけ掘り下げてご紹介します。
dumpメソッドを使うメリット
ビルトイン関数のdump(value: T)
を使うと、
クラスのインスタンスがインデント付きで確認できて便利です。
let yoshio: Member = Member(name: "yoshio", age: 62, account: account)
dump(yoshio)
出力結果:
ちゃんと、yoshioオブジェクト内のaccountオブジェクト(構造体)まで、階層になって見れてます
printとdumpを比較してみた
他にもdumpを使ったほうが便利なケースはないか検証してみました
辞書
let dict: [String: String] = ["職業": "エンジニア", "趣味": "ゲーム"]
print(dict)
print("-------")
dump(dict)
printのほうがkey: valueの形になっているので、見やすい
配列
let primeNumber: [Int] = [2, 3, 5, 7, 11, 13, 17, 19]
print(primeNumber)
print("-------")
dump(primeNumber)
どっちでもいい..。
ただ、dumpだと配列の個数まで見れるので、ケースによっては便利かも。あと多重配列のときとか
タプル
let tuple: (String, Int) = ("hiroshi", 29)
print("-------")
print(tuple)
dump(tuple)
どっちでもいい..。
構造体
let account: Account = Account(id: 001, email: "hiroshi@example.com")
print("-------")
print(account)
dump(account)
どっちでもいい
ためしに..
ViewControllerのself.view.frame
を出力したところ
print(self.view.frame)
dump(self.view.frame)
d..dumpのほうが見やすい!
printの場合、値だけが出力されますが、
dumpだとCGRect内のorigin: CGPoint
、size: CGSize
プロパティまで掘って見やすく表示してくれるようです。