@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()
}
这是我正在制作的一个简单的天气应用程序,我的问题是当我点击按钮时它并没有真正显示天气并且它给我这个错误“ fatal error :数组索引超出范围” 请帮助。
最佳答案
在这一行中:
var newContentArray = contentArray[1].componentsSeparatedByString("</span>")
您假设 contentArray
至少有两个元素。如果没有,您将崩溃。显然,这种假设是不正确的。您不能依赖从应用程序外部收到的数据;在处理它之前,您必须验证它的格式是否符合您的预期。
关于arrays - SWIFT - 将数组向下转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808726/