在模型中查找特定项目和更改值 - Swift
Finding specific item and change value in model - Swift
我正在尝试更改模型中的值或更新值,但由于某些未知原因它没有更新值。
我通过匹配 id 准确地找到了该行,但之后该值没有更新。
我想更新 Item
模型中的 bgColor
。
减速度:var AppDetailData : AppointmentDetail?
我的代码:
for var i in AppDetailData?.sectionList ?? [] {
for j in i.items ?? [] {
if let row = i.items?.firstIndex(where: {[=11=].unitId == id}) {
i.items?[row].bgColor = "yellow"
}
}
}
JSON 型号:
struct AppointmentDetail : Codable {
let projectId : Int?
let projectName : String?
let projectNo : String?
let projectType : String?
let sectionList : [SectionList]?
}
struct SectionList : Codable {
let title : String?
var sectionId: Int?
var items : [Item]?
}
struct Item : Codable {
var bgColor : String?
var unitId : Int?
var latitude : Double?
var longitude : Double?
}
因为你的模型定义为Struct,所以要修改你必须调用AppDetailsData.....来改变。例如:
将您的 sectionList 变量从 let 更改为 var,并使用此
更改您的代码
guard let list = AppDetailData?.sectionList else {
return
}
if let index = list.firstIndex(where: {[=10=].items?.first?.unitId == 1}) {
AppDetailData?.sectionList?[index].items?[0].bgColor = "yeallow"
}
假设您将数组属性更改为 var
声明而不是可选的,并且 unitId
(所有 *Id 属性)为非可选的,您可以使用以下内容
for (index, appointment) in appointments.enumerated() {
for (index1, section) in appointment.sectionList.enumerated() {
if let index2 = section.items.firstIndex(where: {[=10=].unitId == id}) {
appointments[index].sectionList[index1].items[index2].bgColor = "yellow"
}
}
}
我正在尝试更改模型中的值或更新值,但由于某些未知原因它没有更新值。
我通过匹配 id 准确地找到了该行,但之后该值没有更新。
我想更新 Item
模型中的 bgColor
。
减速度:var AppDetailData : AppointmentDetail?
我的代码:
for var i in AppDetailData?.sectionList ?? [] {
for j in i.items ?? [] {
if let row = i.items?.firstIndex(where: {[=11=].unitId == id}) {
i.items?[row].bgColor = "yellow"
}
}
}
JSON 型号:
struct AppointmentDetail : Codable {
let projectId : Int?
let projectName : String?
let projectNo : String?
let projectType : String?
let sectionList : [SectionList]?
}
struct SectionList : Codable {
let title : String?
var sectionId: Int?
var items : [Item]?
}
struct Item : Codable {
var bgColor : String?
var unitId : Int?
var latitude : Double?
var longitude : Double?
}
因为你的模型定义为Struct,所以要修改你必须调用AppDetailsData.....来改变。例如: 将您的 sectionList 变量从 let 更改为 var,并使用此
更改您的代码 guard let list = AppDetailData?.sectionList else {
return
}
if let index = list.firstIndex(where: {[=10=].items?.first?.unitId == 1}) {
AppDetailData?.sectionList?[index].items?[0].bgColor = "yeallow"
}
假设您将数组属性更改为 var
声明而不是可选的,并且 unitId
(所有 *Id 属性)为非可选的,您可以使用以下内容
for (index, appointment) in appointments.enumerated() {
for (index1, section) in appointment.sectionList.enumerated() {
if let index2 = section.items.firstIndex(where: {[=10=].unitId == id}) {
appointments[index].sectionList[index1].items[index2].bgColor = "yellow"
}
}
}