iOS
Swift

Xcode6,Swiftで APIのURLを分ける

More than 1 year has 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を向く