iPhone simulatorでmacのファイルを読み込めるようにしたらデバッグが快適になった
はじめに
その中で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のレスポンスを受け取る部分を差し替えて、Macのjsonファイルを読み込むようにして、期待するレスポンスを返せるようにする。
実装
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でファイルを更新すれば、レスポンスの値を動的に変更できるのでデバッグが更に楽になります