Ios 替换阵列';Swift 3中的s indexOf(:)方法
在我的项目(用Swift 3编写)中,我想使用Ios 替换阵列';Swift 3中的s indexOf(:)方法,ios,swift3,Ios,Swift3,在我的项目(用Swift 3编写)中,我想使用indexOf(:)方法(存在于Swift 2.2中)从数组中检索元素的索引,但我找不到任何替代方法 在Swift 3或任何类似的操作中,有没有合适的替代方法 更新 我忘了提到我想在自定义对象中搜索。在代码完成中,我在键入“indexof”时没有得到任何提示。但是当我尝试获取内置类型的索引时,比如Int代码完成,我可以使用index(of:)方法。indexOf(:)已重命名为index(of:),用于符合equalable的类型。您可以将任何类型与
indexOf(:)
方法(存在于Swift 2.2中)从数组中检索元素的索引,但我找不到任何替代方法
在Swift 3或任何类似的操作中,有没有合适的替代方法
更新
我忘了提到我想在自定义对象中搜索。在代码完成中,我在键入“indexof”时没有得到任何提示。但是当我尝试获取内置类型的索引时,比如Int
代码完成,我可以使用index(of:)
方法。indexOf(:)
已重命名为index(of:)
,用于符合equalable
的类型。您可以将任何类型与equalable
一致,这不仅仅适用于内置类型:
struct Point: Equatable {
var x, y: Int
}
func == (left: Point, right: Point) -> Bool {
return left.x == right.x && left.y == right.y
}
let points = [Point(x: 3, y: 5), Point(x: 7, y: 2), Point(x: 10, y: -4)]
points.index(of: Point(x: 7, y: 2)) // 1
接受闭包的indexOf(:)
已重命名为index(其中:)
:
直到我给我的班级打了一个A,我才在Swift 3 XCode 8中为我工作 例如:
class MyClass {
var key: String?
}
extension MyClass: Equatable {
static func == (lhs: MyClass, rhs: MyClass) -> Bool {
return MyClass.key == MyClass.key
}
}
这在Swift 3中对我有效,没有扩展:
struct MyClass: Equatable {
let title: String
public static func ==(lhs: MyClass, rhs: MyClass) -> Bool {
return lhs.title == rhs.title
}
}
索引(of:)
?不同的语法,相同的功能。建议:使用代码补全。你需要阅读此文档并将其添加到书签中:是的,我试过了。但是代码完成并没有显示自定义对象的索引(of:)
方法。它仅显示内置类型。对象必须符合Equatable。我这里有一个例子:stackoverflow.com/a/32953118/2227743 equalable matters:)。
struct MyClass: Equatable {
let title: String
public static func ==(lhs: MyClass, rhs: MyClass) -> Bool {
return lhs.title == rhs.title
}
}