TyphoonConfig を使用すると、.properties、.plist、または .json 形式の外部構成ファイルで構成を定義できます。これらの形式は限定された型を提供するため、Typhoon は文字列表現を必要な型に変換する組み込みの型コンバーターを提供します。組み込みのコンバーターは、プリミティブと、NSURL、UIColor などの一般的な型に対して存在します。独自に定義することもできます。
NSURL を外部化するには、構成を参照する定義を作成します。
/*
* A config definition, referencing properties that will be loaded from a plist.
*/
public dynamic func config() -> AnyObject {
return TyphoonDefinition.configDefinitionWithName("Configuration.plist")
}
これを使って:
public dynamic func someClass() -> AnyObject {
return TyphoonDefinition.withClass(SomeClass.self) {
(definition) in
definition.useInitializer("initWithHost:") {
(initializer) in
initializer.injectParameterWith(TyphoonConfig("someUrl"))
}
}
}
そして、次のように構成ファイルを作成します。
<plist version="1.0">
<dict>
<key>someUrl</key>
<string>NSURL(http://api.worldweatheronline.com/free/v2/weather.ashx)</string>
<key>api.key</key>
<string>dbaffee6eb10d4fdc1a5d333554e4</string>
<key>days.to.retrieve</key>
<string>NSNumber(5)</string>
</dict>
</plist>
値を として宣言していることに注意してください。これはNSURL(http://api.worldweatheronline.com/free/v2/weather.ashx)
、Typhoon が NSURL を処理できるコンバーターのレジストリーを検索することを意味します。こちら で説明されているように、独自のコンバーターを登録することもできます。