亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

UserDefaultをアプリ外から読み書きする方法。

今回も小さめのネタを。

最近はRealmを使うきかも増えているのですが、やはりiOSのアプリでローカルにデータを保存するとなると、最初に上がる選択肢は UserDefault となりますよね。

USerDefault の値は、基本的にはアプリからしか読み書きできなくなっています。しかし例えば起動時の初期化フラグなどをUserDefaultに持っていたりすると、テストのたびにインストール / アンインストール を繰り返して、、、と結構面倒くさいものになります。

また特定の条件を再現したいときなども、結構もとに戻すのは大変で、アプリにデバッグコマンドを仕込んだり、、、なんてことも皆さんやってるんじゃないでしょうか。

しかし実はこのUserDefault、読み書きできるんですよね。

UserDefaultを読み書きする

UserDefault を読むのに必要なのは、XCode のみです。

まずは Window > Devices and Simulators をクリックします。

f:id:posaunehm:20180823222325p:plain

するとデバイスウィンドウが開きます。そこで利用しているDeveiceなりSimulatorなりを選択します。 f:id:posaunehm:20180824111612p:plain

そうするとそのデバイスデバッグ可能なアプリの一覧が出てくるので、UserDefaultを読みたいアプリを選び、 Download Container をクリックします。

f:id:posaunehm:20180823222317p:plain

そうすると、そのアプリのデータがまとめてダウンロードされます。それを「パッケージの内容を表示」で見てやると、、、

f:id:posaunehm:20180823222314p:plain

以下のようなディレクトリができます。 AppData > Library > Preferences と移動していくと、 %BundleID%.plist となっている plist が見つかります。 f:id:posaunehm:20180824111608p:plain

これをがUserDefaultの正体です。ダブルクリックでXCodeが開くので、好きな値に変更してみましょう。 f:id:posaunehm:20180824111605p:plain

これを Upload Container で再度アップロードすると、編集した UserDefault を利用することができます!

というわけで

細かい技ですが、知ってるとかなり便利です。お試しあれ。