导致NSRangeExceptionindex

时间:2016-06-09 00:08:15

标签: swift loops swift2 xcode7 nsrangeexception

我有一个简单的循环,我希望将变量附加到数组(如果存在)。检查每个变量......有人知道为什么会崩溃吗?

这是我得到的错误:

NSRangeException', reason: '*** -[__NSArray0 objectAtIndex:]: index 0 beyond bounds for empty NSArray

这是声明和使用数组的第一个循环:

private func parseJson(json : NSMutableArray, tableView : UITableView){
    var jsonArrData : [JsonArrayValues] = []
    var c : Int = 0
    for j in json {
        var jsonValues : JsonArrayValues = JsonArrayValues()
        //Create main value
        guard let value = j.valueForKey("value")?.valueForKey("value")! else{
            continue
        }
        //Get name
        guard let Name : String = (value.valueForKey("Name")?.valueForKey("en") as? String) else {
            continue
        }
        jsonValues.name = Name
        jsonArrData.append(jsonValues)        
        c += 1
    }    
    //Reorder Array by shop distance from user...
    jsonArrData.sortInPlace({$0.distance < $1.distance})
    //This is the loop that crashes:    
    for jsonVal in jsonArrData as [JsonArrayValues]{
        if let name : String = jsonVal.name where jsonVal.name.isEmpty == false{
            TableData.append(name)
        }        
    }
}

这是类jsonValues:

import Foundation
class JsonArrayValues  {

    init(){

    }
    var name : String = ""
    var distance = Float()
    var lat = Float()
    var lng = Float()
    var openingTime = String()
    var country = String()
    var code = String()
    var address = String()
    var categories = String()
    var city = String()
    var type = String()
    var brands = String()

}

编辑: 我添加了断点并更改了一些代码以便能够更好地测试并且看起来不会在循环中崩溃:

enter image description here

正如您在图片中看到的那样,我将索引设置为10,因为我认为应用程序在循环中的最后一个索引中崩溃了。数组它在最后一个索引中,并且循环中断,但应用程序继续执行并在此行之后崩溃:

doTableRefresh(tableView);

1 个答案:

答案 0 :(得分:0)

我设法找出问题所在,并且它根本就不在循环中。我正在从tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell文件访问一个全局数组,数组不再被上面的循环填充,所以它崩溃了。非常感谢您的评论!