<分区>
获取数组中项目索引的最有效方法是什么?在 Objective-C 中,我们曾经能够做到:
[arrayName indexOfObject:myObject]
在 Swift 中,我知道我们可以执行以下操作。
index =arrayName.indexOf({$0 === myObject})
这是最干净、最有效的方法吗?
<分区>
获取数组中项目索引的最有效方法是什么?在 Objective-C 中,我们曾经能够做到:
[arrayName indexOfObject:myObject]
在 Swift 中,我知道我们可以执行以下操作。
index =arrayName.indexOf({$0 === myObject})
这是最干净、最有效的方法吗?
最佳答案
正如 Oliver 指出的那样,您可以使用
let index = array.indexOf(myObject)
但是,这只有在您的对象符合 Equatable
协议(protocol)时才有效,要符合它,您必须实现 ==
函数,如下所示:
class MyClass {
}
extension MyClass: Equatable { }
func ==(lhs: MyClass, rhs: MyClass) -> Bool {
return lhs === rhs // === returns true when both references point to the same object
}
如果您的类继承自 NSObject
并且您的比较不仅仅是比较指针,您还必须覆盖 isEqual:
override func isEqual(object: AnyObject?) -> Bool {
guard let obj = object as? MyClass else { return false }
return self == obj
}
关于ios - 如何获取数组中项目的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36650233/
相关文章:
ios - 是否可以将 String 转换为 simd_float4x4 ? ( iOS 12 )
ios - Xcode 7 支持 watch OS1 和 OS2
objective-c - Xcode 的自动布局仅在 viewDidAppear 中有效,这是非常有问题的
java - 如何避免在 Int Array 中获得相同的数字?
javascript - 如何使用for循环返回数组中第一次出现的重复项?
javascript - 如何根据 JavaScript Node.js 中的单个值动态拆分数组