ios - 如何获取数组中项目的索引?

标签 ios arrays swift

<分区>

获取数组中项目索引的最有效方法是什么?在 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 中获得相同的数字?

ios - Phonegap 谷歌地图和白名单拒绝

javascript - 如何使用for循环返回数组中第一次出现的重复项?

javascript - 如何根据 JavaScript Node.js 中的单个值动态拆分数组

swift - 测试当前时间是否在两个时间间隔之间

swift - Swift 中的字符串和字符比较不区分语言环境是什么意思?

ios - 如何使用 Swift 在 iOS 中以编程方式打开显示和亮度中的 NightShift