我有两个数组。如何更改数组中的不同值?
I have two array. How Can I change different value in Array?
我只将带有 isSelected = true
的项目发送到 favCountries
。
countries
中有来自该服务的所有国家/地区。
我想将来自服务的 countries
与 favCountries
进行比较,并在具有相同 code
且值为 isSelected = true 的国家/地区数组中创建 isSelected = true
最喜欢的国家。
如果favCountries
数组中的代码和countries
数组中的code
匹配,我想使countries
数组中的item值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]
不确定你是不是又问了这个问题。但是如果我理解正确的话,让你的 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
}
}
如果我没看错问题,
您想遍历 var favCountries: [CountryData]
和 var countries: [CountryData].code
如果在你的循环中你的条件 favCountries[[=13=]]
== countries[[=14=]].code
为真,那么你想将 $0.isSelected 设置为真。
我的伪代码方法:
您可以遍历一个数组并检查每个对象代码是否存在于另一个数组中,然后如果存在,则将您的 isSelected 值设置为 true。
假设两个 [CountryData] 数组都是偶数,您可以尝试这样的操作:
FOR EACH country in CountryData {
if let hasMatch = countries.contains({where: country.code == [=10=].code}) {
country.isSelected = true
}
祝你好运。
如果有帮助请告诉我!
我只将带有 isSelected = true
的项目发送到 favCountries
。
countries
中有来自该服务的所有国家/地区。
我想将来自服务的 countries
与 favCountries
进行比较,并在具有相同 code
且值为 isSelected = true 的国家/地区数组中创建 isSelected = true
最喜欢的国家。
如果favCountries
数组中的代码和countries
数组中的code
匹配,我想使countries
数组中的item值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]
不确定你是不是又问了这个问题。但是如果我理解正确的话,让你的 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
}
}
如果我没看错问题,
您想遍历
var favCountries: [CountryData]
和var countries: [CountryData].code
如果在你的循环中你的条件
favCountries[[=13=]]
==countries[[=14=]].code
为真,那么你想将 $0.isSelected 设置为真。
我的伪代码方法:
您可以遍历一个数组并检查每个对象代码是否存在于另一个数组中,然后如果存在,则将您的 isSelected 值设置为 true。
假设两个 [CountryData] 数组都是偶数,您可以尝试这样的操作:
FOR EACH country in CountryData {
if let hasMatch = countries.contains({where: country.code == [=10=].code}) {
country.isSelected = true
}
祝你好运。
如果有帮助请告诉我!