2016-03-01 2 views
1

Это должно быть супер базовым, но я все равно получаю сообщение об ошибке.Swift: получение значения словаря, если я знаю ключ

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. Я не уверен, как еще получить доступ к значениям словаря со строковым ключом, кроме как с помощью строки для индекса. Что мне здесь не хватает?

+0

Где находится определение '' Комментарий''? У него есть член '' commentId''? – formal

ответ

0

Попробуйте использовать if let и привести его к соответствующему типу.

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

Конечно, как только я задаю вопрос, я нашел ответ:

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

мне нужен типаж значения commentAttributes [ «ID»] так, чтобы он соответствовал типу comment.commentId

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

+0

Спасибо за отправку ссылки. Действительно, вводящее в заблуждение сообщение об ошибке. – Eiko

Смежные вопросы