我无法弄清楚如何在数组中找到对象的索引.例如,我有这个数据结构:
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, ...]
Run Code Online (Sandbox Code Playgroud)
我尝试使用,personsArray.index(where: ....)但我不明白如何使用它.index(of: ...)不起作用.我认为因为personsArray不符合Equatable协议......
Mik*_*ash 16
index(of: )
Run Code Online (Sandbox Code Playgroud)
在你的情况下获取Person - 它是通用函数.
index(where: )
Run Code Online (Sandbox Code Playgroud)
获取您想要找到特定人员的条件
你能做什么:
personsArray.index(where: { $0.name == "person1" })
Run Code Online (Sandbox Code Playgroud)
或者您可以将对象发送到:
personsArray.index(of: existingPerson)
Run Code Online (Sandbox Code Playgroud)
对于这两个选项,你可以得到零 - 你必须检查它是否为零(或保护它).
从我的角度来看,只是比较一下===。
小例子。
func getPersonIndex(from: [Person], user: Person) -> Int? {
return from.index(where: { $0 === user })
}
getPersonIndex(from: personsArray, user: person2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10438 次 |
| 最近记录: |