0
私はJSONデータを解析する構造体に取り組んでいます。そのデータはDark skyからです。私がそれに取り組んでいる間、何かが私の脳を打ち、それ以来それを熟考していました。指定された初期化子VSを静的メソッドを使用して構造体に代入する
伝統的に、私たちは指定されたイニシャライザを使用していましたが(オブジェクト指向のイニシャライザを無料で提供していますが)、オブジェクトをインスタンス化しています。しかし、それ自身を返す静的関数を簡単に使うことができ、その関数はプロパティに値を設定します。そのような
:
struct WeatherForecastData {
// Weather data
var apparentTemperature: Double?
var icon: String?
var precipProbability: Double?
var pressure: Double?
static func map(_ data: [String: AnyObject]) -> WeatherForecastData {
var p = WeatherForecastData()
p.apparentTemperature = data["apparentTemperature"] as? Double ?? nil
p.icon = data["icon"] as? String ?? nil
p.precipProbability = data["precipProbability"] as? Double ?? nil
p.pressure = data["pressure"] as? Double ?? nil
return p
}
}
予告静的メソッド、我々は指定イニシャライザでそれを置き換えるならば、それは静的メソッドと同じことをやっているでしょう。私の質問は、従来の指定されたイニシャライザの代わりにオブジェクトをインスタンス化するために静的メソッドを使うべきときです。