不能下标类型' [String:AnyObject]'的值。索引类型'字符串'

时间:2015-11-16 00:56:42

标签: ios swift

我试图从JSON内容(在我的data.swift文件中)获取一些数据并将其分配给" comments"。任何人都知道这里出了什么问题以及如何解决它?看起来像是一个我遇到问题的语法问题。

我得到的错误: The error I am getting

import UIKit

class CommentsTableViewController: UITableViewController {

var story = [String:AnyObject]()
var comments = [String:AnyObject]()

override func viewDidLoad() {
    super.viewDidLoad()

    comments = story["comments"]

    tableView.estimatedRowHeight = 140
    tableView.rowHeight = UITableViewAutomaticDimension
}

它不喜欢comments = story["comments"]部分。

2 个答案:

答案 0 :(得分:26)

您的代码中存在错误,但由于Swift编译器错误,您看到的错误消息不正确且具有误导性。实际的错误消息应为:AnyObject is not convertible to [String:AnyObject]

self.story["comments"]会返回AnyObject。要将该值分配给self.comments,您必须首先将AnyObject类型转换为字典类型[String:AnyObject]

例如:

self.comments = self.story["comments"] as! [String:AnyObject]

答案 1 :(得分:0)

根据您自己的声明,SELECT * FROM Users WHERE City IN ('fe4e2e2c-8638-4081-b6de-e10252e638e7', 'fess2c-8638-4rgf-b6de-e102sdf3447'); story。这意味着[String:AnyObject]是一个AnyObject。但story["comments"]comments不是是AnyObject。您无法指定期望[String:AnyObject]的AnyObject。