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 中获取每个项目的特定年份。在这种情况下,只会返回两年:2021
和 2020
.
我尝试根据我在网上找到的内容使用 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)
}
}
这就是你想要的吗?如果你真的需要 特定的 年,在你写的时候,你需要在 compactMap
和 forEach
之间使用类似 .filter({[2020,2023].contains([=13=])})
的东西。
所以我有一个存储数组的 .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 中获取每个项目的特定年份。在这种情况下,只会返回两年:2021
和 2020
.
我尝试根据我在网上找到的内容使用 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)
}
}
这就是你想要的吗?如果你真的需要 特定的 年,在你写的时候,你需要在 compactMap
和 forEach
之间使用类似 .filter({[2020,2023].contains([=13=])})
的东西。