struct Area {
var name: String
var isSelected: Bool
}
我有两个列表:
我想做的是创建一个新的区域列表,其中包含两个列表中的项目,但是如果列表一中的元素在列表二中,我想将isSelected属性更新为true。
我写了当前方法,但它有缺陷且效率低下:
private func didGetCurrentUserSession(_ usersAreas: [Area]?, allAreas: [Area]){
guard let usersAreas = usersAreas else {return}
var newAreasList = [Area]()
for area in allAreas {
for userArea in usersAreas {
if userArea.name == area.name {
newAreasList.append(Area(name: area.name, isSelected: true))
break
}
}
newAreasList.append(Area(name: area.name, isSelected: false))
}
_loadingAreas.onNext(false)
_areas.onNext(newAreasList)
}
对此将提供任何帮助,我们将不胜感激。宁愿使用非常迅速的方法来完成此任务。
两种选择:对两个数组都进行排序,或者将其中一个变成字典以快速查找。无论您做什么,都将其转换为通用方法。