は、私は、このリンクhttps://api.myjson.com/bins/13axs1でサンプルJSONからテーブルビューのセルを移入しようとしているが、textLabelを割り当てるしようとしたときcellForRowAt機能でエラーを取得していますSwift4でCodableプロトコルを使用してJSONデータをTableViewCellに取り込む方法は?
を解決しました。
タイプ '[City]?'持っている何の添字メンバーん
JSON
[
{
"name": "New York",
"information": "Later will be added",
"imageUrl": "later"
},
{
"name": "New York",
"information": "Later will be added",
"imageUrl": "later"
}
]
のViewControllerのコード:
struct City: Codable {
let name: String?
let information: String?
let imageUrl: String?
}
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var citiesList: [City] = []
override func viewDidLoad() {
super.viewDidLoad()
let jsonUrlString = "https://api.myjson.com/bins/13axs1"
guard let url = URL(string: jsonUrlString) else { return }
URLSession.shared.dataTask(with: url) { (data, response, err) in
guard let data = data else { return }
do {
let cities = try JSONDecoder().decode([City].self, from: data)
if cities != nil{
self.citiesList = cities
}else {
print("nothing to display")
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
} catch let jsonErr {
print("Error serializing json:", jsonErr)
}
}.resume()
}
}
extension ViewController: UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return citiesList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = citiesList[indexPath.row].name // here I am getting error type '[City]? has no subscript members
return cell
}
}
は申し訳ありませんが、すべてのコードはIの後に明確に示していない理由を私は知りませんそれを追加しましたが、皆さんに理解してもらえることを願っています。ありがとうございました。
エラーメッセージを取得している(もしそうなら、あなたのオリジナルのポストでそれを投稿する)、またはデータがあなたのテーブルビューに表示されませんの? – nathan
@nathan、はい、エラーメッセージが表示され、xCodeはプロジェクトをビルドできません。 cellForRowAtで、セルのtextLabelを割り当てようとしたときに、「タイプ」[City]というエラーが発生しましたか?添字のメンバーはありません。 – Julius
回答が更新されました。 – nathan