У меня есть файл JSON, и я пытаюсь получить доступ к массиву в нем.
Файл JSON выглядит следующим образом:
{
"cars": [{
"name": "BMW",
"icons": [["front.png", "back.png", "B3"],
["front_red", "back_red", "C4"]
]
}]
}
// cars это массив словарей, я только что упомянул один из них.
Я получаю данные JSON как:
func loadJSONData(){
if let path = Bundle.main.path(forResource: "testJSON", ofType: "json")
{
if let jsonData = NSData(contentsOfFile : path)
{
do {
if let jsonResult = try JSONSerialization.jsonObject(with: jsonData as Data, options: JSONSerialization.ReadingOptions.mutableContainers) as? [String:Any]
{
self.testJSONData = (jsonResult["cars"] as? Array)!
//self.testJSONData = (jsonResult["cars"] as? Array<Dictionary<String, Any>>)! //also tried this
}
}
catch let error as NSError {
print(error.localizedDescription)
}
}
}
}
testJSONData объявляется как массив:
var testJSONData = [] as [Dictionary<String, Any>]
и ошибка возникает при попытке получить массив "icons" из JSON.
let namePredicate = NSPredicate(format: "name like BMW")
let filteredArray :Array = testJSONData.filter() { namePredicate.evaluate(with: $0) }
let carData: Dictionary = filteredArray[0] as Dictionary<String, Any>
let carIcons: Array = carData["icons"] as! Array //error at this line
Невозможно преобразовать значение типа 'Array <_>' в указанный тип 'Array'
Может кто-нибудь показать мне, где я не так делаю? Спасибо!