JSON 数组 Swift 的索引

Posted

技术标签:

【中文标题】JSON 数组 Swift 的索引【英文标题】:Index of JSON Array Swift 【发布时间】:2015-12-02 21:35:07 【问题描述】:

我正在使用这个库来解析返回数组的 API 端点:https://github.com/SwiftyJSON/SwiftyJSON

我正在抓取从 JSON 响应中获取的数组,并尝试将其输入到表格中。

在我的视图控制器中的类被声明后,我有

var fetched_data:JSON = []

在我的 viewDidLoad 方法内部:

let endpoint = NSURL(string: "http://example.com/api")
        let data = NSData(contentsOfURL: endpoint!)
        let json = JSON(data: data!)
        fetched_data = json["posts"].arrayValue

为了喂表,我有:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

        let cell: UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell1")! as UITableViewCell
        cell.textLabel?.text = self.fetched_data[indexPath.row]
        return cell      
    

我在尝试设置单元格 textLabel 时遇到此错误:

Cannot subscript a value of a type ‘JSON’ with an index type of ‘Int’

如何正确执行此操作并使其正常工作?

【问题讨论】:

【参考方案1】:

您将fetched_data 声明为JSON

var fetched_data:JSON = []

但您正在为它分配Array

fetched_data = json["posts"].arrayValue

让我们将类型更改为AnyObject的数组:

var fetched_data: Array<AnyObject> = []

然后分配应该是这样的(我们有[AnyObject]所以我们需要转换):

if let text = self.fetched_data[indexPath.row] as? String 
    cell.textLabel?.text = text

编辑:您还需要记住分配正确的Array,通过使用arrayObject 而不是arrayValue

fetched_data = json["posts"].arrayObject

【讨论】:

谢谢!现在,在我的 vieDidLoad 方法中,我得到:无法将“[JSON]”类型的值分配给“Array 非常感谢,非常感谢!

以上是关于JSON 数组 Swift 的索引的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 数组 - 在其他数组的帮助下删除多个元素

使用swift解析包含索引的json数据?

窥探Swift之数组安全索引与数组切片

Swift 对数组进行排序并返回索引和元素的数组

如何在swift 3中找到数组包含字典的数组索引?

Swift:填充二维数组时出现索引超出范围错误