2017-02-22 29 views
0

У меня действительно странная ошибка. Изучали 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 Я ищу

Я приложил изображение методов, которые появляются и не смогли найти ответ, почему это может произойти где угодно.

Я не могу найти использование метода func index (of:), хотя я знаю, что он существует!

Я получаю следующее сообщение об ошибке компилятора:

ChecklistViewController.swift:186:26: Argument labels '(of:, _:)' do not match any available overloads

ChecklistViewController.swift:186:26: Overloads for 'index' exist with these partially matching parameter lists: (Int, offsetBy: Int), (Self.Index, offsetBy: Self.IndexDistance)

enter image description here

+0

Это опечатка в вашем посте? Это должно быть 'items.index (of: rowitem)'. Обратите внимание на 'index' вместо' Index'. – rmaddy

+0

Является ли 'TaskItem'' Equatable'? – Hamish

+0

не было, спасибо – user2219097

ответ

4

TaskItem должен соответствовать спецификации протокола Equatable для того, чтобы использовать index(of:).

0

Я полностью согласен с Тимом 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}!)