Я пытаюсь зациклить массив в структуре JSON, но что бы я ни делал, я получаю сообщение об ошибке "Невозможно добавить значение типа '[item]' с индексом типа 'item'. Я могу распечатайте его всякий раз, когда я обращаюсь к каждому индексу отдельно:
self.socialTitle = (storeSocialContext.items?[1].metatags?.first?.title)!
print(self.socialTitle)
Что возвращает мне строку, как я хочу. Но я хочу строки каждого индекса, для заголовка.
Это цикл, который выдает ошибку:
var anArray = storeSocialContext.items!
for socialIndex in anArray {
if anArray[socialIndex] != nil {
}
}
И это структура:
struct StoreSocialContext: Decodable
{
var items: [Item]?
}
struct Item: Decodable
{
var metatags: [enclosedTags]?
enum CodingKeys : String, CodingKey
{
case pagemap
}
enum PageMapKeys: String, CodingKey
{
case metatags
}
init(from decoder: Decoder) throws
{
let values = try decoder.container(keyedBy: CodingKeys.self)
let pagemap = try values.nestedContainer(keyedBy: PageMapKeys.self, forKey: .pagemap)
metatags = try pagemap.decode([enclosedTags].self, forKey: .metatags)
}
}
struct enclosedTags: Decodable
{
let image: String?
let title: String?
let description: String?
let siteName: String?
private enum CodingKeys : String, CodingKey
{
case image = "og:image", title = "og:title", description = "og:description", siteName = "og:site_name"
}
}
И это фрагмент данных, когда я получаю и печатаю JSONdata в консоли:
Optional([GetContext.Item(metatags: Optional([GetContext.enclosedTags(image:
nil, title: nil, description: nil, siteName: nil)])), GetContext.Item(metatags:
Optional([GetContext.enclosedTags(image: Optional("https://www.merriam-
webster.com/assets/mw/static/social-media-share/mw-logo-245x245@1x.png"),
title: Optional("Definition of BEST"), description: Optional("excelling all
others; most productive of good : offering or producing the greatest advantage,
utility, or satisfaction; most, largest… See the full definition"), siteName:
nil)])), ...])