我只發送帶有isSelected = trueinto的專案favCountries。有來自該服務的所有國家/地區countries。我想將countries來自服務的資料與國家陣列中的資料進行比較,favCountries并isSelected = true在國家/地區陣列中進行比較,這些國家code/地區的值與 favCountries 中的 isSelected = true 相同。
如果陣列中的代碼favCountries和陣列code中的countries匹配,我想讓陣列中的項countries值isSelected = true
我正在使用這個模型。
public struct CountryData: Codable {
public let code: String?
public let currencyCodes: [String]?
public let name: String?
public let wikiDataID: String?
public var isSelected: Bool = false
}
var favCountries: [CountryData]
var countries: [CountryData]
uj5u.com熱心網友回復:
不確定這是否是您再次要求的。但是,如果我理解正確使您CountryData符合Equatable,請迭代您的國家索引,如果favCountries包含當前元素,請將國家isSelected屬性更改為true:
extension CountryData: Equatable {
public static func ==(lhs: Self, rhs: Self) -> Bool {
lhs.name == rhs.name // match the appropriate properties
}
}
countries.indices.forEach { index in
if favCountries.contains(countries[index]) {
countries[index].isSelected = true
}
}
uj5u.com熱心網友回復:
如果我正確閱讀了這個問題,
你想回圈
var favCountries: [CountryData]和var countries: [CountryData].code如果在您的回圈中,您的條件
favCountries[$0]==countries[$0].code為 TRUE,那么您希望將 $0.isSelected 設定為 TRUE。
我在偽代碼中的方法:
您可以遍歷一個陣列并檢查每個物件代碼是否存在于另一個陣列中,然后如果確實存在,請將您的 isSelected 值設定為 true。
假設兩個 [CountryData] 陣列都是偶數,您可以嘗試這樣的事情:
FOR EACH country in CountryData {
if let hasMatch = countries.contains({where: country.code == $0.code}) {
country.isSelected = true
}
祝你好運。
讓我知道這是否有幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410210.html
標籤:
上一篇:邊的順序在聯合查找中重要嗎?
