質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

4309閲覧

Info.plistの値をSchemeごとに変えたい

hodoru3sei

総合スコア284

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/06/27 07:00

実現したいこと

開発用のSchemeではDirectoryフォルダを共有して共有ボタンからファイルを入れられる様にし、リリース用のSchemeで共有をoffにしたいと考えています。

現状

App Delegateに以下の様なコードでInfo.plistの値をDictionaryがたで取得しました。
しかし、plistはCannot assign through subscript: subscript is get-onlyというエラーが出てしまい値を直接入れ替えることはできない様です。

なんとかしてSchemeごとに動作を切り替えたいのですがどうしたらよいのでしょうか?

let filePath = Bundle.main.path(forResource: "Info", ofType: "plist") let plist = NSDictionary(contentsOfFile: filePath!) #if Develop plist!["UIFileSharingEnabled"] = true plist!["LSSupportsOpeningDocumentsInPlace"] = true #endif #if Release plist!["UIFileSharingEnabled"] = false plist!["LSSupportsOpeningDocumentsInPlace"] = false #endif

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんにちは。

ググっただけですが、以下の記事で切り替えられている方がいらっしゃいました。
DebugとReleaseで定義を切り替える3つ目のベストな方法

別の方法として、SCHEMEではなくTARGETを増やせばinfo.plistも簡単に切り分けられます(勝手に増えます)。


追記:

もう一個ググってひっかかったものがありました。
XcodeでDevelop/Staging/Release環境を上手に切り分ける方法

「設定上で分岐」という手法を使えばスキーム毎に値を差し込めるのではないかと思いました。
これができれば一番楽そうではあります。

投稿2019/06/27 07:08

編集2019/06/27 08:20
takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hodoru3sei

2019/06/27 08:03

共有していただいたリンク先のものを試してみたのですが値が適応されていない様でした。 固定のデータではなくプロジェクト自体の設定はダメなのかもしれないです。 TARGETを増やしたことがないのであまりわかってないのですがTARGETを増やした際プロジェクトのコードって共有できるものなんでしょうか?
takabosoft

2019/06/27 08:07

TARGETを増やした場合、コードは共有です。ただ、ファイルごとに、どのTARGETに含めるかを右ペインの方で指定する方式になるので、たまにそのチェックのし忘れで画像などが特定のTARGETに入らないという事故が起きたりします。その点だけ注意してください。
takabosoft

2019/06/27 08:20 編集

もう一個ググってひっかかったものがありました。 https://qiita.com/Todate/items/a2e6a26731c79bd23e02 「設定上で分岐」という手法を使えばスキーム毎に値を差し込めるのではないかと思いました。 これができれば一番楽そうではあります。
guest

0

ベストアンサー

Info.plistを二つ用意していいなら、Build SettingsのPackaging-Info.plist Fileで、Scheme毎にInfo.plistを設定してやれば切り替え出来ます。(実際に値が切り替わるところまでは確認しました。その後の動作については保証なし)

二つ用意するのがちょっとアレですが‥。

投稿2019/06/27 08:53

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/06/27 08:59

もしかしたらtakabosoftさんの追記と被っちゃったかも。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問