@IBOutlet var cityField: UITextField!
@IBOutlet var message: UILabel!
@IBAction func buttonPressed(sender: AnyObject) {
self.view.endEditing(true)
var urlString = "http://www.weather-forecast.com/locations/" + cityField.text.stringByReplacingOccurrencesOfString(" ", withString: "") + "/forecasts/latest"
var url = NSURL(string: urlString)
let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, respons, error) in
var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
var contentArray = urlContent.componentsSeparatedByString("<span class=\"phrase\">")
var newContentArray = contentArray[1].componentsSeparatedByString("</span>")
self.message.text = newContentArray[0] as? String
println(urlString)
}
task.resume()
}
这是一个简单的天气应用程序我正在制作,我的问题是当我点击按钮时它并没有真正显示天气并且它给了我这个错误&#34;致命错误:数组索引输出范围&#34; 请帮忙。
答案 0 :(得分:2)
在这一行:
var newContentArray = contentArray[1].componentsSeparatedByString("</span>")
您认为contentArray
至少有两个元素。如果它没有,你会崩溃。显然这种假设是不正确的。您不能依赖从您以外的应用收到的数据;在处理之前,您必须以您期望的格式验证它。