在我的應用程式的視圖中,我試圖在另一個陣列中列出一個陣列的值。這些陣列是通過 API 呼叫通過 JSON 填充的。兩個陣列都是可選的。我首先檢查陣列是否包含 nil 值。我知道在這種情況下它不是零。
我收到一條錯誤訊息,“型別 '[Landscape]' 的值沒有成員 'mulching'”
這是存在的 JSON 的適用部分:
"projectType": {
"landscapes": [
{
"id": 6,
"types": [
"mulching",
"clearing",
"planting",
"treeCare",
"other"
],
"mulching": {
"id": 1,
"mulchingType": "Create new mulch beds",
"currentlyInPlace": "Grass / Weeds",
"currentlyInPlaceCustom": "",
"roomLength": "20",
"roomWidth": "4",
"color": "Black",
"customColor": "",
"length": "",
"approximateLength": ""
}
}
}
我的模型結構如下:
// MARK: - ProjectType
struct ProjectType: Codable {
let landscapes: [Landscape]?
let generalConstructions: [GeneralConstruction]?
}
// MARK: - Landscape
struct Landscape: Codable {
let id: Int
let types: [String]
let mulching: Mulching?
let clearing: Clearing?
let planting: Planting?
let treeCare: TreeCare?
let other: Other?
}
// MARK: - Mulching
struct Mulching: Codable {
let id: Int
let mulchingType, currentlyInPlace, currentlyInPlaceCustom, roomLength: String
let roomWidth, color, customColor, length: String
let approximateLength: String
}
這是我遇到錯誤的地方:
import SwiftUI
struct LandscapeSpecificsView: View {
let projectType: ProjectType
var body: some View {
VStack{
if let landscapes = projectType.landscapes {
if landscapes.contains(where: {$0.mulching != nil}) {
Text(
"\(landscapes.mulching)" **ERROR HERE**
)
}
}
}
}
}
我如何參考覆寫模型值,如 mulching.id、mulching.mulchingType、mulching.color 等?
uj5u.com熱心網友回復:
重申一下@jnpdx,在您的代碼中landscapes是一個 Landscape 陣列,每個元素都包含覆寫物,但不包含陣列本身。你可以嘗試這樣的事情:(使結構覆寫可識別)
struct LandscapeSpecificsView: View {
let projectType: ProjectType
var body: some View {
VStack{
if let landscapes = projectType.landscapes,
let mulchings = landscapes.compactMap{$0.mulching} {
ForEach(mulchings) { mulch in
Text(mulch.mulchingType)
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/373021.html
