JSONArray 无法根据 indexPath 获取数组

Posted

技术标签:

【中文标题】JSONArray 无法根据 indexPath 获取数组【英文标题】:JSONArray cannot get array based on indexPath 【发布时间】:2017-08-02 20:17:27 【问题描述】:

我正在从 JSon 数组创建一个表格列表视图。但我无法根据 indexPath 显示数组名称。我试过 indexOf 但它不可用。

假设在第 1 行,它将显示“Testing”,在第 2 行,它将显示“Yeeea”。我是 swift 新手,被困在这里.. 通常这应该很简单:(

tt_array 已定义

var tt_array: Array<Any>

ViewDidLoad 中的某处

self.tt_array = jsonObj["get_array_list"] as! Array

在我们的 tt_array - print(tt_array)

[
    "array_name" = Testing;
    ourid = 4;
    total = 2;
, 
    "array_name" = Yeeea;
    ourid = 7;
    total = 1;
]

在我们的 cellForRowAt 中

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

var listthis = self.tt_array[indexPath] **error here**
        var array_name = listthis['array_name']


        cell.textLabel?.text = "TEST"

        // Configure the cell...

        return cell
    

错误提示:无法使用“IndexPath”类型的索引为“Array”类型的值下标

【问题讨论】:

你在 tableview 中得到了什么。? 我在上面更新了:错误说:无法使用索引类型为“IndexPath”的下标类型为“Array”的值 嗨一般来说,我们将只使用 indexPath.row。请问self.tt_array[indexPath.row] 【参考方案1】:

首先用更具体的类型声明数组

var tt_array = Array<[String:Any]>()

你必须得到索引路径的

let listthis = self.tt_array[indexPath.row]

你必须将值向下转换为String,顺便说一句:Swift 不支持文字字符串的单引号。

let array_name = listthis["array_name"] as? String

旁注:这不是 phpjavascript,请使用 camelCased 变量名而不是 snake_cased

【讨论】:

【参考方案2】:

这是你的答案。

var list = self.tt_array[indexpath.row] as? NSDictonary
var array_name = list["array_name"] as? String

print(array_name)

【讨论】:

以上是关于JSONArray 无法根据 indexPath 获取数组的主要内容,如果未能解决你的问题,请参考以下文章

无法使用改造解析对象内部 jsonarray 的 jsonarray?

如何修复 JSONObject 无法转换为 JSONArray

无法解析 JSONArray 无法转换为 JSONObject

JSONObject 无法在 android 中转换为 JSONArray

无法将字符串转换为 JsonArray

如何在Swift中根据json id(意味着indexPath应该与json id匹配)从collectionView didSelectItemAt indexPath pushViewContro