JSON数组Swift的索引

时间:2015-12-02 21:35:07

标签: ios json swift alamofire swifty-json

我正在使用此库来解析返回数组的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 个答案:

答案 0 :(得分:2)

您宣布fetched_dataJSON

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