如何解决如何在不同的数组中查找相同的元素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(where:)返回与布尔返回闭包中的条件匹配的元素的第一个索引;如果没有,则返回nil
。
guard let interestingIndex = array.firstIndex(where: { $0.url == model3.url })
else { /* something's gone wrong */ }
当然,最好将url
声明为实际的URL。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。