arrays - 如何快速查找不同数组中的相同元素

标签 arrays swift tableview

假设我有一个对象模型。我将这些对象放入一个数组中。我在 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(where:)它返回与 bool 中的条件相匹配的元素的第一个索引,返回闭包或 nil 如果没有。

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

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

关于arrays - 如何快速查找不同数组中的相同元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63371712/

相关文章:

c - 程序运行但不显示准确数据

c - 在 C 中拆分数组

java - 如何使用动态生成的不同类型的列创建表格 View ?

c - 如何合并两个数组而不重复?

java - 将二维数组传递给构造函数时出现 NullPointerException

ios - 设置 Sub-UIViewController 框架高度

ios - Swift Realm - 如何计算单列中的所有数据?

ios - 如何处理未打开的推送通知(iOS、Swift)

ios TableView不同的单元格高度

swift - 在 Swift 中通过代码调整 tableView 的高度