t-osawa-009 blog

学んだことを載せます

iPhone simulatorでmacのファイルを読み込めるようにしたらデバッグが快適になった

はじめに

最近のiOSアプリ開発APIとの接続は必須になってきた。

その中でAPIのリスポンスをもとに期待した動作を確認することが必要になってくる。

その確認を楽にするための方法を考えました

こちらのライブラリを参考に実装した

krzysztofzablocki/KZFileWatchers

環境

Xcode 12.5

Build version 12E262

Apple Swift version 5.4 (swiftlang-1205.0.26.9 clang-1205.0.19.55)

Target: arm64-apple-darwin20.5.0

 

やりたいこと

iOS側でAPIのレスポンスを受け取る部分を差し替えて、Macjsonファイルを読み込むようにして、期待するレスポンスを返せるようにする。

実装

最初にmacディレクトのpathを返すメソッドを用意

class func simulatorOwnerUsername() -> String {
      let usernameConmponets =NSHomeDirectory().components(separatedBy: "/")
      guard usernameComponents.count > 2 else { fatalError() }
      return usernameComponents[2]
}

次にDeskTopのpathを作成して、Data型をして呼び出す

 func loadfile(filename: String = "test.json") -> Data? {
        #if targetEnvironment(simulator)
                let path = "/Users/\(Self.simulatorOwnerUsername())/Desktop/\(filename)"

                if !FileManager.default.fileExists(atPath: path) {
                    return nil
                }

                let url = URL(fileURLWithPath: path)
               guard let content = try? Data(contentsOf: url, options: .uncached) else {
                  return nil
              }
              return content
        #else
              return nil
        #endif
    }

Data型にすることでCodableなどで簡単に扱うことができる さらにMacでファイルを更新すれば、レスポンスの値を動的に変更できるのでデバッグが更に楽になります