내 앱에 tableView가 있는데, 앱을로드 할 때 뷰가 서버 목록에서 채워지는 목록으로 채워지 길 원합니다.swift for 루프가 충분히 반복되지 않습니다.
나는이 작업을 수행하지만 서버의 목록에있는 첫 번째 개만로드합니다.
은 여기로 서버 여기
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)")
}
에서 JSON 응답을 serialises 곳에서 (서버에서 인쇄 응답 포함) 로그의 사본
Optional([[{"ID":"47","Name":"Sparky","Surname":"McAllister"}],
[{"ID":"31","Name":"Maddie","Surname":"Crawford"}]])
Dog
47 Safe
을의 시작 코드입니다 로그에서 볼 수 있습니다,이 목록에 2 마리의 개가 있습니다. 루프가 작동 중이면 Dog
이 로그에 두 번 인쇄되고,는 새 Dog
개체를 만드는 코드 부분에 도달하는 경우 31 Safe
으로 인쇄됩니다.
내가 잘못한 것을 해결할 수 없으며 누구든지 내 문제를 볼 수 있습니까?
감사
JSON의 구조가 이상합니다. 단 하나의 사전 배열입니다. 정말 이상해. 그러므로 TheDogs는 [AnyObject] 여야하며, if aDog = dog [0]을 [String : AnyObject]'또는 이와 비슷한 것으로 루프해야합니다. – Larme
내 PHP는 스스로 배웠습니다 ... 나는 첫 번째 배열을 제거하는 법을 배우지 못했을 것입니다. –
당신의 JSON은 "{{"ID ":"47 ","Name ":"Sparky ","Sameame ":"McAllister "}, {"ID ":"31 ","Name " : "Maddie", "Sameame": "Crawford"}]'개가 배열 된 곳으로, 개는 사전입니다. 그런 다음 코드를 유지하고 다음 행을 변경해야합니다.'theDogs = json [0]을 그대로 사용 하시겠습니까? theDogs = json을 let으로하면 [[String : AnyObject]]'를'로'? '[String : AnyObject]]' – Larme