Swift:如果我知道密钥

时间:2016-03-01 16:02:02

标签: swift dictionary subscript

这应该是超级基本的,但无论如何我都会收到错误。

Cannot subscript a value of type 'Dictionary<String, AnyObject>' with an index of type 'String'

这是我的代码:

func createComments(attributes: [[String: AnyObject]], votes: [String: AnyObject], sid: Int) -> [Comment] {
    var comments: [Comment] = [Comment]()

    for commentAttributes in attributes {
        let comment = Comment()
        comment.commentId = commentAttributes["id"]
        comments.append(comment)
    }  

    return comments
}

我收到了这一行的错误:

comment.commentId = commentAttributes["id"]

据我所知,commentAttributes应该是一个字典,其键为字符串和AnyObject的值。我不确定如何使用String键访问Dictionary的值,而不是使用String to subscript。我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

当然,一旦我提出问题,我就会找到答案:

Cannot subscript a value of type '[String : AnyObject]' with an index of type 'String'

我需要对commentAttributes [&#34; id&#34;]的值进行类型转换,以便它与comment.commentId的类型匹配

comment.commentId = commentAttributes["id"] as! Int

答案 1 :(得分:1)

尝试使用if let并将其转换为正确的类型。

for commentAttributes in attributes {
        let comment = Comment()
        if let id = commentAttributes["id"] as? Int {
           comment.commentId = id
        }
        comments.append(comment)
}