2017-02-22 4 views
0

私は本当に奇妙なエラーがあります。 Swiftを学んだことがあり、配列内のオブジェクトのインデックスを見つけるためのドキュメントを読んでいました:https://developer.apple.com/reference/swift/array/1689674-indexインデックス(of:element)は存在しません

このメソッドは私の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インデックス(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

TaskItemindex(of:)を使用するためにEquatableプロトコルに準拠する必要があります。

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}!) 
関連する問題