这应该是超级基本的,但无论如何我都会收到错误。
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。我在这里缺少什么?
答案 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)
}