Swift-数组过滤器,然后更新主数组

时间:2018-12-04 02:08:27

标签: ios arrays swift nsarray

let cities = [{ "name" : "SF", "id" : 4, "population" : 10, favorite: false},  { "name" : "NY", "id" : 5, "population" : 20, favorite: false}, { "name" : "DC", "id" : 6, "population" : 30, favorite: false}

我有一个数组,可以说如果用户基于总体应用过滤器,我可以使用 filter 方法过滤该数组,但是它给了我另一个带有过滤数据的数组。在过滤数组中,用户可以收藏城市,而当用户删除过滤器时,我需要显示带有收藏夹指示符的城市的完整列表。问题是过滤后的数组是一个单独的数组,整个数组不知道是否在过滤后的数组上更改了属性。有没有更简单的方法来处理所有这些?我可以过滤主数组而不创建另一个吗?

1 个答案:

答案 0 :(得分:0)

创建JSON结构

struct City {
    var name : String = ""
    var id : Int = 0
    var population : Int = 0
    var favorite : Bool = false
}

这是城市的阵列

var cities = [City(name: "SF", id: 4, population: 10, favorite: false),City(name: "NY", id: 5, population: 10, favorite: false),City(name: "DC", id: 6, population: 30, favorite: false)]

比基于人口== 10的城市应用过滤器

var filter = cities.filter({ $0.population == 10 })

在那之后成为其中的最爱

Ex:- filter[1].favorite = true

并在主数组中更新该城市的最爱

cities = cities.map { (city) -> City in
    var city = city
    if city.id == filter[1].id {
        city.favorite = true
    }
    return city
}