Swift でオブジェクトのプロパティの差異を確認する方法を紹介します。
本編
動作確認やテストなどで、2 つのオブジェクトの内容の差分を確認したいことがあると思います。例えば、下のコードでは 2 つの struct がありますが、この 2 つの差異を確認するにはどうしたらいいでしょうか:
let a = Example(
key1: "I'm not changed",
key2: "I'm deleted"
)
let b = Example(
key1: "I'm not changed",
key2: "I'm inserted"
)
dump
や print
で diff するのが最も一般的だと思いますが、より便利な方法が存在します。まず、MirrorDiffKit というライブラリを CocoaPods や Carthage 経由でインストールし、下のように diff
関数を入れるだけです:
import MirrorDiffKit
print(diff(between: a, and: b))
すると、コンソールに次のようなメッセージが表示されます:
struct Example {
key1: "I'm not changed"
- key2: "I'm deleted"
+ key2: "I'm inserted"
}
また、配列の内容も表示できます:
[
"i'm not changed"
+ "i'm deleted"
"i'm not changed"
"i'm not changed"
"i'm not changed"
"i'm not changed"
- "i'm inserted"
"i'm not changed"
]
デバッグやテストが捗りますね。