Swift如何在单行上写声明

时间:2014-09-17 06:13:42

标签: objective-c swift

给出以下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()

。 。然而斯威夫特并不喜欢这样。有没有办法在一行上写这个表达式?

1 个答案:

答案 0 :(得分:1)

使用括号。

let currentConditions = (self.valueForKeyPath("current_condition") 
as NSDictionary).toCurrentConditions()

这应解决您的语法问题,但我不确定NSDictionary上的所有这些扩展方法是否是最佳设计。如果没有看到更多你正在尝试做的事情,很难说最好的是什么 - 我建议另外提出一个问题来寻求建议。