iOS
Swift

Xcode6,Swiftで APIのURLを分ける

More than 3 years have passed since last update.

APIのURLが開発、テスト、本番と3つあるとする。

Xcode5,Objective-Cの時はPreprocessor Macrosを使ってしてたが、Swiftではこの記述ができない。

#ifdef

#endif


コンパイルのオプションを使う

XcodeのBuild Settingのカスタムフラグを使う。


定数の設定ファイルをつくり設定をかく

Const.swiftという定数のクラスを作りそこへ書く。


Const.swift

class Const : NSObject {

/* API URLs */
#if DEBUG
let URL_API = "http://debug.hoge.com/api"
#elseif STAGING
let URL_API = "http://staging.hoge.com/api"
#else
let URL_API = "http://production.hoge.com/api"
#endif

}



Xcodeの設定

TARGETS > Build Settings > Swift Compiler - Custom Flags > Other Swift Flags

Debugのところへ -D DEBUGを新たに追加する。(デフォルトは空)


ビルドし呼び出す


どこでもいいので、ログに出す。


ViewConstroller.swift

println(Const().URL_API)

/* 結果↓
http://debug.hoge.com/api
*/



Build Settings のFlagを -D STAGINGにして再度ビルド


ViewConstroller.swift

println(Const().URL_API)

/* 結果↓
http://staging.hoge.com/api
*/



リリースビルド

TARGETS > Build Settings > Swift Compiler - Custom Flags > Other Swift Flags

Releaseのところが空なので本番のURLを向く