Schemeごとにinfo.plistの値を変更する

以前Info.plistをデバッグに切り替えるというtargetを増やしてinfo.plistの内容を書き換える記事を書きましたが、targetを増やさなくてもSchemeで切り替える方法を見つけたのでまとめます。

info.plistはget-onlyのプロパティなのでコードないで直接書き換えることはできません。書き換えることができないのであれば複数作ってしまえば良いのです。

Schemeのinfo.plistの設定

Schemeがどのinfo.plistを参照しているかという情報は、Target > BuildSetting > Packaging > Info.plist fileに記載されています。

参照先を新規に作成したpropertyListに設定をすればSchemeごとに違った設定を盛り込むことが可能になります。

開発用のSchemeだけDocumentsフォルダを解放することなんかができます!

チョットハマったこと、バグ?

私の環境だけなのかもしれませんが、先にdocument解放用のpropertyListを作成しschemeの参照先に新規で作成したpropertyListを設定すると値が反映されませんでした。

それどころかデフォルトで存在しているinfo.plistにdocument解放用の設定を入れてみても適応されませんでした、謎です🐙

info.plistでdocument共有の設定をON > 共有されていることを確認 > 新規にpropertyListを作成 > Schemeに適応 > 反映されることを確認 > info.plistを元に戻すの手順で実装したら正常な動作しました。