簡體   English   中英

導致NSRangeExceptionindex的循環

[英]A loop causing NSRangeExceptionindex

我得到了一個簡單的循環,我希望在變量存在的情況下將變量附加到數組中。 每個變量都被檢查......任何人都知道為什么會崩潰?

這是我得到的錯誤:

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()

}

編輯:我添加了斷點並更改了一些代碼以便能夠更好地測試並且看起來不會在循環中崩潰:

在此輸入圖像描述

正如您在圖像中看到的那樣,我將索引設置為10,因為我認為應用程序在循環中的最后一個索引中崩潰了。 數組它在最后一個索引中,並且循環中斷,但應用程序繼續執行並在此行之后崩潰:

doTableRefresh(tableView);

我設法找出問題所在,並且它根本不在循環中。 我正在從tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell文件訪問一個全局數組,該數組不再從上面的循環中填充,因此它崩潰了。 非常感謝您的評論!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM