2016-09-16 4 views
0

ここでは問題を引き起こしているステートメントです。私は$ 0はオブジェクトを表し知る限りSwift 3.0配列 "contains"引数コンパイラエラー

Value of tuple type '(offset: Int, element: Any)' has no member 'index'

:これは$0.indexのXcodeで

keys = keys 
     .enumerated() 
     .filter { !indexesToRemove.contains($0.index) }   
     .map { $0.element } 

右にスウィフト2.2に完全に働いたが、3.0では動作していないとXcode 8.コンパイラエラーを投げていますkeys配列内にあります。どんなタプルについて話しているの?

答えて

3

indexは(なぜ私に聞かないでください)スウィフト3にoffsetに変更されました:

keys = keys 
    .enumerated() 
    .filter { !indexesToRemove.contains($0.offset) } 
    .map { $0.element } 
+0

ありがとうございました。これは何かがこれを示していたことはひどくいいことでした。 –

+0

名前が変更されたのは、 'enumerated()'がインデックスを提供しないということです。単に0から連続したカウントを提供するだけです。 'Array'の場合、これは単にインデックスと一致しますがこれは他のコレクションでは必ずしもそうではありません。したがって、それを 'offset'に名前を変更すると、この混乱が排除されます。 – Hamish

関連する問題