#swift #dictionary #swift3
#swift #словарь #swift3
Вопрос:
Я получаю сообщение об ошибке:
Неоднозначная ссылка на элемент ‘нижний индекс’
В следующем коде:
let jsonObject = try JSONSerialization.jsonObject(with: data, options: [])
guard let jsonDictionary = jsonObject as? [NSObject: AnyObject],
let photos = jsonDictionary["photos"] as? [String: AnyObject], // this line is giving the error
let photosArray = photos["photo"] as [[String: AnyObject]] else {
print("Error")
}
В предыдущих сообщениях предлагалось изменить тип с [String: AnyObject]
на [AnyObjectHashable: Any]
. Это не устранило ошибку. Может кто-нибудь объяснить, почему возникает эта ошибка и как ее можно устранить?
Ответ №1:
Вы можете заменить это, для создания словаря в swift 3 вы можете использовать like [String: Any] вместо [String: AnyObject]
let jsonObject = try JSONSerialization.jsonObject(with: data, options: [])
guard let jsonDictionary = jsonObject as? [String: Any],
let photos = jsonDictionary["photos"] as? [String: AnyObject], // this line is giving the error
let photosArray = photos["photo"] as? [[String: Any]] else {
print("Error")
}
print(jsonDictionary)
Комментарии:
1. Спасибо. Я изменил все на Any и AnyHashable.
2. @grabury В своем вопросе вы сказали, что пробовали именно это, и это не сработало. Что заставило его работать сейчас?
3. @HAS ошибка была в этой конкретной строке, поэтому я изменил только эту строку. Затем я изменил все вхождения на AnyHashable и Any
4. С этого момента лучше использовать Any, чем AnyObject