SwiftyJSON: обновить ячейки в UITableView из ответа JSON

Я новичок в разработке iOS, поэтому будьте осторожны.

Я использую Alamofire и SwiftyJSON для проекта, чтобы получить и проанализировать файл JSON, который находится на сервере. Я также использовал этот учебник, чтобы получить UITableView с несколькими ячейками «Ячейка 1», «Ячейка 2», «Ячейка 3».

Используя плагин SwiftyJson, я закодировал:

request(.GET, url, parameters: parameters)
        .responseJSON { (req, res, json, error) in
            if(error != nil) {
                NSLog("Error: \(error)")               
                println(req)
                println(res)
            }
            else {
                NSLog("Success: \(url)")
                var json = JSON(json!) 

                var indexValue = 0           
                for (index, item) in enumerate(json) {
                    println(json[index]["Brand"]["Name"])

                    var indvItem = json[index]["Brand"]["Name"].stringValue

                    self.items.insert(indvItem, atIndex: indexValue)

                    indexValue++

                }

            }
    }

Строка println() работает и отображает правильные элементы:

println(json[index]["Brand"]["Name"])

однако я не могу заставить их войти в камеры.

В верхней части файла и из инструкций учебника для UITableView у меня есть эта строка:

var items = ["Cell 1", "Cell 2", "Cell 3"]

Ошибок нет, ячейки просто сохраняют свои первоначальные значения. Как получить ответ JSON для обновления ячеек в UITableView?

Редактировать:

 @IBOutlet var tableView: UITableView!

var items = ["Cell 1", "Cell 2", "Cell 3"]


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.items.count;
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

    cell.textLabel.text = self.items[indexPath.row]

    return cell
}

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    println("You selected cell #\(indexPath.row)!")
}

person DannieCoderBoi    schedule 04.02.2015    source источник
comment
обычно перезагрузка таблицы делает это, можете ли вы показать код методов источника данных табличного представления?   -  person rishi    schedule 04.02.2015
comment
@rishi добавил весь код для таблицы.   -  person DannieCoderBoi    schedule 04.02.2015


Ответы (1)


Вам нужно перезагрузить таблицу после анализа данных, так что что-то вроде -

request(.GET, url, parameters: parameters)
    .responseJSON { (req, res, json, error) in
        if(error != nil) {
            NSLog("Error: \(error)")               
            println(req)
            println(res)
        }
        else {
            NSLog("Success: \(url)")
            var json = JSON(json!) 

            var indexValue = 0           
            for (index, item) in enumerate(json) {
                println(json[index]["Brand"]["Name"])

                var indvItem = json[index]["Brand"]["Name"].stringValue
                self.items.insert(indvItem, atIndex: indexValue)

                indexValue++
            }
                self.tableView.reloadData()  <-----------------------
        }
}
person rishi    schedule 04.02.2015
comment
это сработало, но добавило элементы в начало списка. Как я могу заставить его перезаписать все данные, чтобы в таблицах были только ответы JSON? Спасибо вам за это - я действительно ценю это. - person DannieCoderBoi; 04.02.2015
comment
Я не понимаю, о чем вы сейчас спрашиваете, можете ли вы добавить скриншот проблемы. Что я получаю на данный момент, вы не хотите, чтобы ваши данные предварительной инициализации, в этом случае, прежде чем заполнять новые данные, очистите массив. - person rishi; 04.02.2015
comment
принял ваш ответ - извините за задержку, это заставило меня подождать несколько минут. - person DannieCoderBoi; 04.02.2015