Xcode(SwiftUI)のPreview Contents配下のファイルはリリースビルドのアプリに含まれない

▲ファイル名等を隠す必要もないですが、なんとなく恥ずかしいので。

言いたいことはタイトルが全てなのですが、実に半年近くもハマってしまったのでメモを残します。

内部データをplist形式で保持しているiPhone/iPad向けのアプリを作っており、(とりあえず)完成したと考えたためApp Storeに提出したのですが、”Specifically, your app only displayed a blank screen upon launch.”という内容とともに却下されました。しかし、この事象は自分のシミュレータや複数の実機のデバッグでは再現せず、難儀した…というより対応方法がわからなかったわけです。

そして、今日ふとプロジェクトのファイル構成を見ていたところ、plistファイルが「Preview Content」フォルダに入っているということに気づき、外に出したら(おそらく)解決しました。(いつ、そこに配置したのかはよくわかりません。最初から?)

おそらく解決、と書いたのは、まだApp Storeのreviewには通っていないからです。ではどうやって推測したかというと、macOS上でArchiveされていた当該アプリのパッケージの中身を覗きました。具体的には、「plistファイルをPreview Contentフォルダから出す前」のArchiveされたビルドには必要なplistファイルが含まれず、「出した後」のビルドには含まれていることを確認しました。

Appleのドキュメントにも記載があるようなのですが、探し当てられていません。

後付けですが、Testing a release buildを参照してArchiveされたビルドを実機に入れたら再現しました…。トホホ。

教訓(当たり前ですが…):
(1) シミュレータ・Xcodeからデバッグ中の実機・Release Buildを入れた実機は違う
(2) 再現しないときはRelease Buildを実機に入れてみる
(3) (内蔵データであってもエラー処理してユーザに表示するようにすべきか?)