我的class
定义如下:
class placeData: Equatable {
var description : String
var selected : Bool
init (description : String, selected : Bool) {
self.description = description
self.selected = selected
}
}
然后我按如下方式定义array
:
var placeDataArray = Array<placeData>()
并填充一些项目:
placeDataArray = [placeData(description: "Afghanistan", selected: false), placeData(description: "Albania", selected: false)]
我要做的是获取“阿富汗”等描述的索引,然后从selected
将true
更改为false
。 indexOf
和find
方法似乎不起作用,除非我错误地使用它们。
我还尝试filter
placeDataArray
true
,以便所有descriptions
true
值都出现在我设置的变量中。但是,我也是错误的。我是一个相当新的快速,似乎无法弄清楚这些。此外,数组随用户输入而变化,因此进行索引和过滤。
提前致谢
答案 0 :(得分:3)
我认为最简单的方法就是:
if let index = placeDataArray.indexOf ({ $0.description == "Afghanistan" })
{
placeDataArray[index].selected = true
}
它不需要Equatable。
同样,您可以使用过滤器仅显示所选项目:
let selected = placeDataArray.filter { $0.selected == true }