如何在不同数组中找到相同的元素Swift



假设我有一个对象模型。我正在将这些对象放入一个数组中。我正在TableView中显示这些项目。然后我使用SearchController过滤这个数组,并将过滤后的元素放在另一个数组中,并在搜索中显示它,然后我选择一些行。然后我取消搜索,显示第一个数组,但我希望在其中突出显示我在搜索中选择的元素所在的行(第二个数组中的元素(。据我所知,我需要比较两个数组,在其中找到相同的元素,并获得该元素的索引,然后将该元素的指数传递给didSelectRow。我该怎么做?

struct Model {
var fileName: String
var url: String
init(fileName: String, url: String){
self.fileName = fileName
self.url = url
}
}
let model1 = Model(fileName: "fileOne", url: "/path/fileOne")
let model2 = Model(fileName: "fileTwo", url: "/path/fileTwo")
let model3 = Model(fileName: "fileThree", url: "/path/fileThree")
let model4 = Model(fileName: "fileFour", url: "/path/fileFour")
...
let array: [Model] = [model1, model2, model3, model4]
var sortedArray: [Model] = []
...
//After search 
sortedArray = [model3, model4]
...
//I select element model3, in the sortedArray it has index 0, 
//but, let's say, I don't know what index doest it have in "array", how can I get it?
//I'd like to compare items by URL

使用Array.firstIndex(其中:(,它返回元素的第一个索引,该索引匹配布尔中的条件,返回闭包或nil(如果没有(。

guard let interestingIndex = array.firstIndex(where: { $0.url == model3.url })
else { /* something's gone wrong */ }

当然,最好将url声明为实际的URL。

最新更新