Нужно
Что я хочу сделать, это цикл этих результатов json; для каждой из категорий создать заголовок в UITableView и для каждой из должностей по категории создают Tableview ячейкуSwift Добавление к массиву Изнутри Loop
Файлы проекта
https://jumpshare.com/v/Otai3BBXYwfvyz8jb53k
Проблема
По какой-то причине, когда я пытаюсь добавить к массиву, сформировать внутри цикла for, который он не добавляет.
Вот мой код:
Alamofire.request(.GET, url).validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
let json = JSON(value)
for (_, subJson) in json {
for (index, data) in subJson {
for (title, objects) in data {
sectionsArray.append(Sections(title: title, objects: objects.self.arrayValue.map { $0.string!}))
}
}
}
}
case .Failure(let error):
print(error)
}
}
Когда я добавляю в некоторых печатных изданиях (в соответствии с: sectionsArray.append), чтобы проверить, есть ли данные:
print("--")
print(title)
print(objects.self.arrayValue.map { $0.string!})
print(Sections(title: title, objects: objects.self.arrayValue.map { $0.string!}))
Я получаю этот результат в консоли :
-
Категория 1
[ "Post1cat1"]
разделов (заголовки: "category1", пункты: [ "Post1cat1"])
-
Категория2
[ "Post1cat2", "Post2cat2"]
Разделы (рубрики: "Категория2", предметы: [ "Post1cat2", "Post2cat2"])
Однако, когда я запускаю приложение - в представлении таблицы все, что отображается, это элементы из массива животных.
Полный View Controller
import Foundation
import Alamofire
import SwiftyJSON
class SectionsData {
let url = "https://api.myjson.com/bins/3nuvn";
var myArray: [String] = []
func getSectionsFromData() -> [Sections] {
var sectionsArray = [Sections]()
let animals = Sections(title: "Animals", objects: ["Cats", "Dogs", "Birds", "Lions"])
Alamofire.request(.GET, url).validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
let json = JSON(value)
for (_, subJson) in json {
for (_, data) in subJson {
for (title, objects) in data {
sectionsArray.append(Sections(title: title, objects: objects.self.arrayValue.map { $0.string!}))
}
}
}
}
case .Failure(let error):
print(error)
}
}
sectionsArray.append(animals);
return sectionsArray
}
}
ваш 'Alamofire 'запрос выполняется асинхронно. – luk2302
ОК, но это не отвечает на вопрос. Как это исправить? – JamesG
После того, как вы добавите данные в свой массив, вызовите 'reloadData()' в виде таблицы. –