LoginSignup
16
15

More than 5 years have passed since last update.

Swift で 2 つのオブジェクトの差分を表示する方法

Last updated at Posted at 2017-11-07

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"
)

dumpprint:eye: 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"
  ]

デバッグやテストが捗りますね。

16
15
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
16
15