0
我一直在研究解析JSON数据的结构,该数据来自黑暗的天空。在我研究它的时候,有一件事触动了我的大脑,并一直在思考它。使用指定的初始化VS与静态方法来填充结构
传统上,我们一直在使用指定的初始值设定项(虽然struct为您提供了一个免费的成员智能初始值设定项)来实例化一个对象。但是,我们可以轻松使用一个返回自身的静态函数,并且该函数将填充属性。
像这样:
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
}
}
通知静态方法,如果我们有一个指定初始化代替它,它会做同样的事情作为一个静态方法。我的问题是我们应该在什么时候使用静态方法来实例化对象而不是传统的指定初始化程序?