查找对象数组的索引

15 浏览
0 Comments

查找对象数组的索引

这个问题在这里已经有答案了:

如何在 Swift 中查找列表项的索引?

我无法弄清楚如何在数组中找到对象的索引。例如,我有这个数据结构:

class Person {
var name: String
var age: Int
init(name personName: String, age personAge: Int) {
    self.name = personName
    self.age = personAge
  }
}
let person1 = Person(name: "person1", age: 34)
let person2 = Person(name: "person2", age: 30)
...
var personsArray = [person1, person2, ...]

我尝试使用 personsArray.index(where: ....) 但我不理解如何使用它。 index(of: ...)不起作用。我认为这是因为 personsArray 没有符合 Equatable 协议......

admin 更改状态以发布 2023年5月23日
0
0 Comments

从我的角度来看,只需与 === 进行比较。

小例子。

func getPersonIndex(from: [Person], user: Person) -> Int? {
    return from.index(where: { $0 === user })
}
getPersonIndex(from: personsArray, user: person2)

0
0 Comments

index(of: )

获取您情况中的人 - 这是一个通用函数。

index(where: ) 

获取您想要找到特定人的条件

您可以做什么:

personsArray.index(where: { $0.name == "person1" })

或者您可以将对象发送至:

personsArray.index(of: existingPerson)

对于这两个选项,您可能会得到nil - 您将需要检查它是否为nil(或警卫它)。

0