我正在学习可选项,但我找不到一个例子:如何从不同的对象中链接选项。
我的代码:
let apiKey = "MY_SECRET_API_KEY"
let baseURL = NSURL(string: "https://api.forecast.io/forecast/\(apiKey)/")
if let forecastURL = NSURL(string: "41.155099,-8.678774", relativeToURL: baseURL){
if let weatherData = NSData(contentsOfURL: forecastURL, options: nil, error: nil){
if let json = NSString(data: weatherData, encoding: NSUTF8StringEncoding){
println(json)
}
}
}
我不想在我的代码中使用!
,只是在可读性方面。我怎么能像这个伪代码那样编码:
if forecast = ... && weatherData=... && json=...{
println(json)
}
如果您认为我应该坚持使用!
,我可以了解其优势。
答案 0 :(得分:0)
考虑以下编码风格:
let apiKey = "MY_SECRET_API_KEY"
let baseURL: NSURL! = NSURL(string: "https://api.forecast.io/forecast/\(apiKey)/")
if baseURL == nil {
// handle error
return /*error*/
}
let forecastURL: NSURL! = NSURL(string: "41.155099,-8.678774", relativeToURL: baseURL)
if forecastURL == nil {
// handle error
}
let weatherData: NSData! = NSData(contentsOfURL: forecastURL, options: nil, error: nil)
if weatherData == nil {
// handle error
}
let json: NSString! = NSString(data: weatherData, encoding: NSUTF8StringEncoding)
if json == nil {
// handle error
}
println(json)
它可能看起来很冗长,但它保持缩进级别,它“缩放”到多个语句,在我看来它非常易读。
如果您确定不会发生某些错误,则可以跳过错误处理。