Swift 从 JSON 数组中的每个元素中获取元素

Swift Get Element From Each Element In JSON Array

所以我有一个存储数组的 .json 文件。当我在 swift 中加载文件时,它被称为 trackData。我想要做的是从 trackData 访问这个数组中每个项目的嵌套项目。

例如,如果这是 trackData 中的一项:

[(id: UUID(), trackdate: DateComponents(year: 2021, month: 4, day: 2), tokencount: 2), (id: UUID(), trackdate: DateComponents(year: 2020, month: 8, day: 4), tokencount: 6)]

我想从 DateComponents 中获取每个项目的特定年份。在这种情况下,只会返回两年:20212020.

我尝试根据我在网上找到的内容使用 forEach,但我找不到任何像这样的数组示例,其中每个元素中都有数据。

我是 swift 的新手,所以这可能是我忽略的基本内容。任何帮助是极大的赞赏。谢谢。

您可以按照以下方式尝试

let array = [(id: UUID(), trackdate: DateComponents(year: 2021, month: 4, day: 2), tokencount: 2), (id: UUID(), trackdate: DateComponents(year: 2020, month: 8, day: 4), tokencount: 6)]
let lastYearData = array.filter({ [=10=].trackdate.year == 2020}) //This will give you all objects which has year 2020
let allYears = array.compactMap({ [=10=].trackdate.year })
print(allYears) //This will print all non-null years

我不确定你真正想要什么,但是如果你有像 trackData 这样的项目数组并且你只需要 year 组件,它可能是这样的?

var tracks = [trackData,
              //otherItems
]

tracks.forEach {
    [=10=].compactMap {[=10=].trackdate.year}.forEach {year in
        print(year)
    }
}

这就是你想要的吗?如果你真的需要 特定的 年,在你写的时候,你需要在 compactMapforEach 之间使用类似 .filter({[2020,2023].contains([=13=])}) 的东西。