Невозможно подстроить значение типа '[String: AnyObject]' с индексом типа 'String'
Я пытаюсь получить некоторые данные из содержимого JSON (в моем файле data.swift) и назначить его "комментариям". Кто-нибудь знает, что здесь происходит, и как я могу это исправить? Кажется, проблема с синтаксисом, с которой у меня возникают проблемы.
Ошибка, которую я получаю:
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"]
.
Ответы
Ответ 1
В коде есть ошибка, но сообщение об ошибке, которое вы видите, неверно и вводит в заблуждение из-за ошибки компилятора Swift. Фактическое сообщение об ошибке должно быть прочитано: AnyObject is not convertible to [String:AnyObject]
.
self.story["comments"]
возвращает AnyObject
. Чтобы назначить это значение для self.comments
вы должны сначала AnyObject
в тип словаря [String:AnyObject]
.
Например:
self.comments = self.story["comments"] as! [String:AnyObject]
Ответ 2
Согласно вашей собственной декларации, story
- это [String:AnyObject]
. Это означает, что story["comments"]
является AnyObject. Но comments
- это [String:AnyObject]
, а не AnyObject. Вы не можете назначить AnyObject, где ожидается [String:AnyObject]
.