2016-09-12 4 views
4

私は(遊び場で)これをしようとしていた。String.CharacterView.Index型の変数をインクリメントする方法は?

class SomeClass { 

    private let input: String.CharacterView 
    private var position: String.CharacterView.Index 

    ... 

    private func advance() { 

     position += 1 

    } // advance 

} // SomeClass 

...しかし、私は次のエラーメッセージになっている:私の背後にある理由は、それがあるためです。このインデックスをインクリメントしようとしている

error: binary operator '+=' cannot be applied to operands of type 'String.CharacterView.Index' and 'Int'

input[position] 

を...と入力で特定の文字にアクセスします。私のような何かをしたいと思います。

この時点で私はポジションよりこのバイナリ演算子を使用できないことをすでに知っています。実行可能な解決策は何でしょうか?私はスウィフト3ではスウィフト3とXcodeバージョン8.0ベータ6(8S201h)

答えて

4

を使用してい

、スウィフト進化に A New Model for Collections and Indicesを比較し、 "コレクションは、そのインデックスを移動します"。あなたのケースでは

private func advance() { 
    input.formIndex(&position, offsetBy: 1) 
} 

は1でインデックス位置を進めます。インデックスがendIndexと等しくないように を確認する必要があります。

private func advance() { 
    input.formIndex(&position, offsetBy: 1, limitedBy: input.endIndex) 
} 
関連する問題