Заголовки индексов разделов после синтаксического анализа JSON Swift

#ios #json #swift #uitableview

#iOS #json #swift #uitableview

Вопрос:

Я пытаюсь создать динамические заголовки разделов для моего TableView. Я хочу получить все имена символов, а затем получить первую букву имени для создания sectionIndexTitles, но у меня возникают трудности с этим.

Я получаю JSON из URL:

 func downloadJSON(completed: @escaping () -> ()) {
    let url = URL(string: "mytestURL")
    let configuration = URLSessionConfiguration.ephemeral
    let session = URLSession(configuration: configuration)
    
    session.dataTask(with: url!) { (data, response, error) in
        if error == nil {
            do {
                characters = try JSONDecoder().decode([CharacterStats].self, from: data!)
                DispatchQueue.main.async {
                    completed()
                }
            } catch {
                print("JSON Error")
            }
        }
        }.resume()
}
 

JSON выглядит следующим образом:

 [
 {
  "name": "Batman",
  "type": "DC",
  "gender": "male",
},
{
  "name": "Captain America",
  "type": "Marvel",
  "gender": "male",
},
{
  "name": "Captain Marvel",
  "type": "Marvel",
  "gender": "female",
}
]
 

И моя структура выглядит так:

 public struct CharacterStats: Decodable {
    let name: String
    let type: String?
    let gender: String?
}
 

Комментарии:

1. Какую ошибку вы получаете? Можете ли вы попробовать «общедоступные данные символов структуры: кодируемые?»

2. @achu ошибки как таковой нет. Я не уверен, как получить только имена, чтобы иметь возможность извлекать первую букву для заголовков индексов.

Ответ №1:

Я опубликовал пример кода для этого здесь https://github.com/achuaswani/ListItemExample.git