2017-06-05 7 views
0

に存在するかどうかの確認私はこの配列を有する:任意の時点でインデックスは非オプションアレイ

var currentTouches = [UITouch]() 

を、それが0-5 UITouch ESを含有してもよいです。私は各インデックスをチェックし、もしあれば何かをしたいと思う。

エラーを確認することなく確認する方法が見つかりません。問題は、UITouchはオプションではないので、私はそれがnilかどうか尋ねることはできません。

私は何をしますか?私はそれをオプションにしようとしましたが、それは私の他のコードの大部分を珍しくしています。確かに単純な解決策が必要です。

+0

'for(in dex、touch)currentTouches.enumerated(){//ハンドルをインデックスで扱う} ' – vacawama

+0

特定のタッチアイテムの**インデックス**がアイテム自体ではなく' nil'であるかどうかを調べることができます。 – vadian

+0

'currentTouches'が' UITouch'の配列である場合、指定されたインデックスにオブジェクトが存在するかどうかをチェックするには、 'currentTouches.count> index'をチェックするだけです。 – EmilioPelaez

答えて

1

currentTouchesの有効なインデックスは、単にcurrentTouches.indicesです。したがって、インデックスiが有効かどうかを確認するには、if currentTouches.indices.contains(i)をチェックしてください。 if i < currentTouches.count(既に知っていると仮定して、i >= 0)をチェックすることもできます。

ことをやっての簡単な方法は、有効な指標にだけループになると順番にそれぞれの処理になります。

for index in currentTouches.indices { 
    // handle value at index 
} 

それともインデックスを気にしない場合:

for touch in currentTouches { 
    // handle touch 
} 

enumerated()を使用すると、インデックスと値を含むタプルが得られます。

関連する問題