私は迅速な開発に不慣れで、チュートリアルに従いましたが、このエラーに遭遇し、それを修正する方法がわからなくなるまで、すべてが順調でした。手伝って頂けますか ?
if let json = response.result.value {
let jsonArray:NSArray = json as! NSArray
/// On fait la boucle pour avoir la liste globale des éléments a afficher
for i in 0..<jsonArray.count {
self.OPlays.append(Playlist(
title:(jsonArray[i] as AnyObject).value(forKey: "title") as? String,
artist:(jsonArray[i] as AnyObject).value(forKey: "artist") as? String,
categorie:(jsonArray[i] as AnyObject).value(forKey: "categorie") as? String,
cover_url:(jsonArray[i] as AnyObject).value(forKey: "cover_url") as? String)
)
}
self.tableViewPlaylist.reloadData()
}
ニュースファイルは正しい。
if let json = response.result.value {
let jsonArray:NSArray = json as! NSArray
/// On fait la boucle pour avoir la liste globale des éléments a afficher
for i in 0..<jsonArray.count {
self.OPlays.append(Playlist(
id: (jsonArray[i] as AnyObject).value(forKey: "id") as? Int,
title: (jsonArray[i] as AnyObject).value(forKey: "title") as? String,
artist: (jsonArray[i] as AnyObject).value(forKey: "artist") as? String,
cover_url: (jsonArray[i] as AnyObject).value(forKey: "cover_url") as? String,
categorie: (jsonArray[i] as AnyObject).value(forKey: "categorie") as? String
))
}
self.tableViewPlaylist.reloadData()
}
そのAnyObject
コードをすべて削除します。
if let array = response.result.value as? [[String: Any]] {
for dictionary in array {
self.OPlays.append(Playlist(
id: dictionary["id"] as? Int,
title: dictionary["title"] as? String,
artist: dictionary["artist"] as? String,
categorie: dictionary["categorie"] as? String,
cover_url: dictionary["cover_url"] as? String
))
}
self.tableViewPlaylist.reloadData
}
個人的には、さらに一歩進んで、JSONを手動でデコードするビジネスから抜け出します。を使用しJSONDecoder
ます。
struct Playlist: Codable {
let id: Int?
let title: String?
let artist: String?
let categorie: String?
let cover_url: String?
}
次に、data
それがラップされていないData
オブジェクトであると仮定します。
do {
self.OPlays = JSONDecoder().decode([Playlist].self, from: data)
} catch {
print(error)
}
または、Alamofireを使用している場合は、JSONDecoder
ベースのresponse
メソッドを持つAlamofire5を検討してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加