2015-11-16 140 views
11

我试图从JSON内容(在我的data.swift文件中)获取一些数据并将其分配给“注释”。任何人都知道这里出了什么问题,我该如何解决它?看起来像我遇到的语法问题。不能为索引类型为'String'的类型'[String:AnyObject]'下标值

我得到的错误: 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"]部分。

回答

22

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

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

例如:

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

谢谢达伦。我这样做,运行后崩溃,并给了我这个消息:无法将类型'Swift._SwiftDeferredNSArray'(0x10716fff0)的值转换为'NSDictionary'(0x104b46d60)。有关如何继续的提示? – hkhan

+0

运行时错误意味着'story [“comments”]实际上包含一个数组,而不是您所期望的字典。您可以使用调试器来设置断点并检查'self.story'的内容,或者您​​可以使用'NSLog(“%@”,self.story)''打印内容。或者,您可以将'self.comments'声明为数组而不是字典(并相应地更改类型转换)。 – Darren

0

根据您自己的声明,story[String:AnyObject]。这意味着story["comments"]是AnyObject。但是comments是一个[String:AnyObject],而不是一个AnyObject。您无法分配预期为[String:AnyObject]的AnyObject。

相关问题