2017-06-05 55 views
0

存在的索引我有這樣的陣列:檢查如果在一個非可選陣列

var currentTouches = [UITouch]() 

在任何時候,它可以含有0-5 UITouch ES。我想檢查每個索引,並在內容存在的情況下進行處理。

但我不能找到一種方法來檢查沒有得到一個錯誤。這個問題似乎是,這UITouch是不可選的,所以我不能只是問,如果它是nil

我該怎麼辦?我試圖讓它成爲一個可選的,但這使得我的其他代碼很多不尋常。當然必須有一個簡單的解決方案。

+0

'for(in觸摸)in 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()它給你一個包含索引和值的元組:

for (index, touch) in currentTouches.enumerated() { 
    // handle touch at index 
} 
相關問題