appのnamespace
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