【问题标题】:How to parse nested JSON array in TableView Swift?如何在 TableView Swift 中解析嵌套的 JSON 数组?
【发布时间】:2020-09-02 19:41:26
【问题描述】:

我正在使用一个返回 JSON 作为响应的端点。问题是响应 json 对我来说是一个庞大的数据。从那我想显示所有 Surah(englishName) 名称以显示在 tableview 中。作为 iOS 开发的新手,我尽了最大的努力。请看看我的 sn-p,让我知道我哪里做错了。

my Json data here:

ViewController 代码:

var surahName = [Surah]()

@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
}


//MARK: JSON parse
func parseJSON()  {
    let url = URL(string: "https://api.alquran.cloud/v1/quran/ar.alafasy")
    
    guard url != nil else{
        print("URL Founr Nill")
        return
    }
    
    URLSession.shared.dataTask(with: url!) { (data, response, error) in
        if error == nil && data != nil{
            do{
                self.surahName = try JSONDecoder().decode([Surah].self, from: data!)

                DispatchQueue.main.async {
                    self.tableView.reloadData()
                }
            }catch{
                print(error)
            }
        }
    }.resume()
}

//MARK: Tableview delegate
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return surahName.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell:QuranAudioCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! QuranAudioCell
    let arrdata = surahName[indexPath.section].data.surahs
    cell.nameLbl.text = arrdata[indexPath.row].englishName
    return cell
}

问题是它没有在 tablview 中打印任何内容。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    将第一行改为

    var surahNames = [EnglishName]()
    

    do-catch 块内部变化

    self.surahName = try JSONDecoder().decode([Surah].self, from: data!)
    

    进入

    let response = try JSONDecoder().decode(Surah.self, from: data!)
    self.surahName = response.data.surahs
    

    现在在 cellForRowAtIndexPath 中执行此操作

    let surah = surahName[indexPath.row]
    cell.nameLbl.text = surah.englishName
    

    【讨论】:

    • 谢谢兄弟。非常感谢您的帮助。我发现你也来自孟加拉国。很高兴见到你。如果您与我分享您的 LinkedIn 个人资料,我将非常高兴和感激您,这将是一个很好的机会来关注您。
    • 欢迎兄弟@Asifmimi
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2018-08-06
    • 1970-01-01
    • 2019-12-30
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多