Кажется, ваш API возвращает turkis_name
вместо turkish_name
:
"turkis_name" = "Maynum \U00c7\U0131kmaz A\U011fac\U0131";
Скажите, что инженеры на стороне сервера исправят его, чтобы следовать спецификации API.Или это вы неправильно прочитали спецификацию API?
В любом случае, когда вам нужно адаптировать код к фактическому ответу, вам может потребоваться исправить только одну строку.
let turkishName = jsonElement["turkis_name"] as? String,
Но я даю вам практически полезный совет:
Не игнорируйте ошибки или неверные вводы молча.
С некоторыми изменениями, чтобы сделать ваш код более быстрым, ваш parseJSON(_:)
будет примерно так:
func parseJSON(_ data: Data) -> NSArray {
do{
guard let jsonResult = try JSONSerialization.jsonObject(with: data) as? [[String: Any]] else {
print("Invalid JSON structure")
return []
}
let forest = NSMutableArray()
for jsonElement in jsonResult {
if
let latinName = jsonElement["latin_name"] as? String,
let turkishName = jsonElement["turkis_name"] as? String, //###Use the right key here
let seedType = jsonElement["seed_type"] as? Int,
let leafType = jsonElement["leaf_type"] as? Int,
let spreadingArea = jsonElement["spreading_area"] as? String,
let bothanicalProp = jsonElement["bothanical_prop"] as? String
{
let tempTree = trees()
tempTree.latin_name = latinName
tempTree.turkish_name = turkishName
tempTree.seed_type = seedType
tempTree.leaf_type = leafType
tempTree.spreading_area = spreadingArea
tempTree.botanical_prop = bothanicalProp
forest.add(tempTree)
} else {
//### Do not ignore errors or invalid inputs silently.
print("Missing any of 'latin_name', 'turkis_name', 'seed_type', 'leaf_type', 'spreading_area', 'bothanical_prop'", jsonElement)
}
}
return forest
} catch let error {
print(error)
return []
}
}
(Есть еще несколько частей, которые я хочу исправить, но для них нужно изменить скрытые части вашего кода, поэтому я сдался. И рассмотрим принятие Codable
, при работе с JSON.)
Вам может потребоваться еще несколько исправлений, но когда вы пишете что-то о неожиданном результате, пожалуйста, не забудьте включить:
- Конкретный выводфактический результат
- В дополнение к тому, где и когда вы получите вывод
- И ожидаемый результат
Установка оператора print
и отображение вывода с кодомв том числе это был бы хороший способ.