使用Subcript Swift iOS的模糊不清

时间:2016-03-25 15:49:27

标签: ios swift swift2

自更新最新的Xcode以来,我开始发生以下错误"模糊使用下标"与这段代码有关;

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell = tableView.dequeueReusableCellWithIdentifier("postsCell") as! CustomTableViewCell!
        if cell == nil {
            cell = CustomTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "postsCell")
        }
        let dict:NSDictionary = arrPosts[indexPath.row]

        if let postResourceName = dict["resource_name"]![0] as! String? where !postResourceName.isEmpty {
            cell?.customPostTitle?.text = String(htmlEncodedString: postResourceName)
        } else if let postTitle = dict["title"]!["rendered"] as? String {
            cell?.customPostTitle?.text = String(htmlEncodedString: postTitle)
        }

特别是在这一行;

if let postResourceName = dict["resource_name"]![0] as! String? where !postResourceName.isEmpty {

我对Swift很新,我认为这与变量类型缺乏细节有关,这就是错误被抛出的原因。但我不确定代码应该是什么。

任何指针?

此致 迈克尔

1 个答案:

答案 0 :(得分:0)

Swift编译器会为您提供该错误,因为您不知道您在字典中有values的对象,因此当您执行dict["resource_name"]![0]时,您想要访问包含在其中的数组的第一项字典为value。但是你永远不会告诉你的值是数组,所以values的类型是AnyObject。您可以通过替换

指定词典中包含Array
let dict:NSDictionary = arrPosts[indexPath.row]

let dict = arrPosts[indexPath.row] as [String:[String]]