Debug/Releaseで定数を使い分けれるWrapperクラスを書く
以前書いた記事で、
Swiftでの環境変数を使ってDebug/Releaseで定数を使い分ける - SHIBUYA 3%
User-Definedを使ってDebug/Releaseでそれぞれ設定した値を取得できるようになったんですが、
やはり、毎回NSBundle.mainBundle().objectForInfoDictionaryKey("xxxx") as! String
を書くのは面倒で、かつkey
はStringなのでタイプミスがあっても起動してエラーになるまで気づかないことも起こりえるので、いろいろ調べました。
以下、参考にしたライブラリです。
- hyperoslo/Sugar · GitHub
- kostiakoval/AppInfo: Application informatio... - GitHub
NSBundle.mainBundle()からplist情報を取得するためのWrapperクラスを作る
あとは呼びたい箇所で、以下のように記載。
log.info(AppInfo.version) log.info(AppInfo.build) log.info(AppInfo.identifier)
上記のAppInfoは、plistが存在する前提やってるのでForced Unwrapping
で!
を指定してます。
補完も効くようになって、タイプミスも起こらず、
呼び出し側で、if let
で書く必要はありません!
User-Definedで設定したplistの値はextension
で外出しして、定数専用のファイルで管理したい
extension
で先ほどのAppInfoを拡張して作りました。
こんな感じで!
これで公開リポジトリでkeyを間違って上げてしまうとかに注意するのは当然として、
Run Script
で、環境変数からPlistBuddy
で定数セットしてCIとかでまわせる!
PlistBuddyはまたいずれメモる
- Computed Properties
- Stored Properties
- Read-Only Computed Properties
- Type Properties