给出以下JSON解析代码:
extension NSDictionary {
public func toWeatherReport() -> WeatherReport {
let city = self.valueForKeyPath("request.query") as String
let currentConditionsDict = self.valueForKeyPath("current_condition") as NSDictionary
let currentConditions = currentConditionsDict.toCurrentConditions()
return WeatherReport . . etc
}
public func toCurrentConditions() -> CurrentConditions {
let summary = self.valueForKeyPath("summary")
etc
return CurrentConditions . . etc
}
}
我更愿意写:
let currentConditions = self.valueForKeyPath("current_condition")
as NSDictionary.toCurrentConditions()
。 。然而斯威夫特并不喜欢这样。有没有办法在一行上写这个表达式?
答案 0 :(得分:1)
使用括号。
let currentConditions = (self.valueForKeyPath("current_condition")
as NSDictionary).toCurrentConditions()
这应解决您的语法问题,但我不确定NSDictionary上的所有这些扩展方法是否是最佳设计。如果没有看到更多你正在尝试做的事情,很难说最好的是什么 - 我建议另外提出一个问题来寻求建议。