arrays - SWIFT - 将数组向下转换为字符串

标签 arrays swift downcast

@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/

相关文章:

swift - 从 Silver 命令行在 Windows 上编译 Swift?

python - Swig 从 Base* 向下转型到 Derived*

c++ - 将动态数组传递给其他函数的正确方法

maven - 类型为String []的Maven参数的语法是什么

c - p = (int(*)[3])malloc(3*sizeof(*p)); 是什么意思?

ios swift 4 Google map - 如何在拖动时删除 GMS 标记上的淡入/淡出动画?

ios - 有没有办法在 UIStackView 中嵌入 UIScrollView?

arrays - haskell优化尾递归中的代码和堆栈溢出

rust - 尝试向下转换时出现终身错误

java - 从异常中获取值