私は自分のアプリケーションにtableViewを持っていて、アプリケーションをロードすると、(サーバーから取得した)犬のリストが表示されます。swift forループが十分な回数ループしていない
私はこれを使用していますが、サーバーからリストの最初の犬のみを読み込みます。
ここでは、サーバからの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
(サーバーからの印刷された応答を含む)のログのコピーだserialisesところから始まるコードですログから見ると、このリストに2匹の犬がいます。 ループが動作していた場合はDog
がログに2回、新しいDog
オブジェクトを作成する部分には31 Safe
が表示されます。
私は間違っていたことを解決できません、誰も私の問題を見ることができますか?
おかげ
JSONの構造が奇妙です。 1つの辞書だけの配列です。本当に奇妙です。だから 'TheDogs'は[AnyObject]でなければなりません。' if aDog = dog [0]を[String:AnyObject] 'のようにループする必要があります。 – Larme
私のPHPは独学でした...私はおそらくそれについての質問を投稿する必要があります最初の配列を取り除く方法を決して笑... –
あなたのJSONはもっと感覚的です: '' {ID ":" 47 "、"名前 ":"スパルキー "、"姓 ":"マカリスター "}、{" ID ":" 31 " : "Maddie"、 "Surname": "Crawford"}] '犬の並び、犬は辞書です。それでは、あなたのコードを保持し、この行だけを変更する必要があります: 'if theDogs = json [0]を? theDogs = jsonをletとすれば、[[String:AnyObject]] ''に '? '[String:AnyObject]]' – Larme