iOSアプリで複数のバージョンを作成する場合Xcodeのターゲットを複製して変更していく。
例えば Foo アプリがあってLite版で Foo Lite を作成するとする。
するとアプリの名称はFoo Liteとなる。
しかし、NamespaceもFoo Liteとなってしまう。
クラスに属さないfuncでNamespaceを指定しなければならいな(名称が他のクラスと曖昧になる場合)時に困る。
ContentView内に同じhello() functionがあるため、Namespaceを指定して区別している。
Textで呼び出しているFoo.hello()
がそれに当たる。
import SwiftUI func hello() -> String { return "Hello, world! of Gloval" } struct ContentView: View { var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundColor(.accentColor) Text(Foo.hello()) } .padding() } func hello() -> String { return "Hello, world! in ContentView" } }
これが、Foo Liteターゲットに変更すると
Text (Foo_Lite.hello())
に書き換えなければならなくなる。
#if
で切り替えてもいいが数が多い場合は辟易してしまう。
Build settings に Product Module Name があるので元の Foo に変えるとソースの変更が不要になる。
もう一つ、ターゲットを複製するとSchemaのコピーもできるのだが、Foo copy という名称になる。
これもFoo Liteと一致する様にしたいのだが、変更方法がしばらく分からなかった。
単純に一覧で項目を選んで Return キーを押すだけなんだが気づきにくい。
Stackoverflowで見つけて解決した。
stackoverflow.com