我有一个非常奇怪的错误。一直在学习Swift,并且正在阅读有关在数组中查找对象索引的文档:https://developer.apple.com/reference/swift/array/1689674-index
但是我的Xcode中不存在此方法。
以下是一个例子:
var items : [TaskItem]
items = [TaskItem] ()
let rowitem = TaskItem()
rowitem.text = "helloworld"
items.append(rowitem)
//Attempting to find the index of an object
items.Index(of: rowitem)
//错误 - Xcode无法找到我正在寻找的特定功能
我附上了一张显示方法的图片,但无法找到答案,说明为什么会出现这种情况。
我找不到使用func index(of :)方法,虽然我知道它存在!
我收到以下编译错误:
ChecklistViewController.swift:186:26:参数标签'(of:,_ :)'do 不匹配任何可用的重载
ChecklistViewController.swift:186:26:存在'index'的重载 这些部分匹配的参数列表:(Int,offsetBy:Int), (Self.Index,offsetBy:Self.IndexDistance)
答案 0 :(得分:7)
TaskItem
需要符合Equatable
协议才能使用index(of:)
。
答案 1 :(得分:0)
我完全赞同Tim vermeulen,但我们可以使用下面的代码得到数组的索引,并且它可以完美地工作。
class Name {
var firstName:String = String()
var lastName:String = String()
var fullName:String{
return firstName+lastName
}
}
var items:[Name] = [Name]()
let rowitem = Name()
let name:Name = Name()
name.firstName = "Vala"
name.lastName = "bbbb"
items.append(rowitem)
items.append(name)
//Attempting to find the index of an object
print(items.index{$0 === name}!)