У меня есть tableView в моем приложении, и когда я загружаю приложение, я хочу, чтобы представление было заполнено списком собак (полученным с сервера).Быстрый цикл для цикла, не повторяющийся цикл
У меня есть эта работа, но она будет загружать только первую собаку в списке с сервера.
вот код, начинающийся от того, где он serialises ответ JSON от сервера
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as! [AnyObject]
dispatch_async(dispatch_get_main_queue(), {
self.tableView.beginUpdates()
if let theDogs = json[0] as? [[String: AnyObject]] {
for dog in theDogs {
print("Dog")
if let ID = dog["ID"] as? String {
print(ID + " Safe")
let thisDog = Dog(name: (dog["Name"] as? String)!, surname: (dog["Surname"] as? String)!, id: (dog["ID"] as? String)!, boarding: true)
let newIndexPath = NSIndexPath(forRow: self.dogs.count, inSection: 0)
// code here
self.dogs.append(thisDog)
self.tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Bottom)
}
}
}
self.tableView.endUpdates()
})
} catch {
print("error serializing JSON: \(error)")
}
Вот копия журналов (которая включает в себя печатную ответ от сервера)
Optional([[{"ID":"47","Name":"Sparky","Surname":"McAllister"}],
[{"ID":"31","Name":"Maddie","Surname":"Crawford"}]])
Dog
47 Safe
как вы можно увидеть из журнала, в этом списке 2 собаки. Я бы ожидал, что Dog
напечатал дважды в журнале, если цикл работал, и 31 Safe
, если он попадал на часть кода, которая создает новый объект Dog
.
Я не могу понять, что я сделал не так, может ли кто-нибудь увидеть мою проблему?
благодаря
Структура вашего JSON странная. Это массив из массива только одного словаря. Действительно странно. Поэтому 'theDogs' должен быть [AnyObject], и вы должны зацикливать там с' if let aDog = dog [0] как [String: AnyObject] 'или что-то в этом роде. – Larme
Мой PHP был самоучкой ... Я никогда не разбирался, как избавиться от этого первого массива, я, вероятно, должен опубликовать вопрос об этом lol .... –
Ваш JSON имел бы больше смысла: '[{" ID ":" 47 "," Name ":" Sparky "," Surname ":" McAllister "}, {" ID ":" 31 "," Name " : «Maddie», «Surname»: «Crawford»}] 'Просто массив собак, где собака - это словарь. Тогда вам нужно будет сохранить свой код и изменить только эту строку: 'if let theDogs = json [0] as? [[String: AnyObject]] 'in', если letDogs = json as? [[String: AnyObject]] ' – Larme