Swift嵌套JSON解析后TableView单元格标题赋值报错求助
解决嵌套JSON解析后TableView单元格赋值的类型不匹配问题
你遇到的问题核心很清晰:getData[indexPath.row].title是Title?类型(对应你定义的Codable嵌套结构体),而UILabel.text需要的是String?类型,直接赋值自然会触发类型不匹配的报错。我们只需要正确访问嵌套结构体里的rendered属性,同时妥善处理可选值即可解决。
步骤1:修正数据源类型
你代码里的private var getData = [DownloadJson]()明显是笔误,要和解析用的结构体保持一致,修改为:
private var getData = [JsonSosTalleres]()
步骤2:修改cellForRowAt中的赋值逻辑
在给标签赋值时,通过可选链访问Title结构体里的rendered属性,还可以用空合并运算符设置默认文本,避免标签显示空白:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tablaView.dequeueReusableCell(withIdentifier: "ofertcell") as? OfertasTableViewCell else { return UITableViewCell() } // 正确获取嵌套的标题内容 let currentPost = getData[indexPath.row] cell.titlePost.text = currentPost.title?.rendered ?? "暂无标题" // 内容字段同理处理 cell.contentPost.text = currentPost.content?.rendered ?? "暂无内容" return cell }
补充:确保JSON解析逻辑正确
为了保证数据源能正确填充,你的DownloadJson方法解析部分应该类似这样(以URLSession为例):
func DownloadJson() { guard let targetUrl = URL(string: "你的JSON接口地址") else { print("无效的URL") return } URLSession.shared.dataTask(with: targetUrl) { data, _, error in guard let responseData = data, error == nil else { print("数据获取失败:\(error?.localizedDescription ?? "未知错误")") return } do { // 解析为你定义的结构体数组 self.getData = try JSONDecoder().decode([JsonSosTalleres].self, from: responseData) // 回到主线程刷新表格 DispatchQueue.main.async { self.tablaView.reloadData() } } catch { print("JSON解析错误:\(error.localizedDescription)") } }.resume() }
这样修改后,就能正确从嵌套JSON结构中取出标题和内容,顺利赋值给TableView单元格的标签了。
内容的提问来源于stack exchange,提问作者Mario Burga
相关产品推荐
相关产品推荐

