2016-03-03 74 views
0

我有函數返回的可選元組添加可選的元組數組

(Range<String.Index>?, Range<String.Index>?). 

然後,我需要這個元組添加到元組的陣列,我宣佈爲

var arrayOftuples = [(Range<String.Index>, Range<String.Index>)]() 

我加入這樣的元組到這個數組

arrayOftuples += [mytuple] 

它給了我一個注意,operator + =不能應用於操作數

[(Range<String.Index>, Range<String.Index>)] 

[(Range<String.Index>?, Range<String.Index>?)] 

當我做了陣列的可選

var arrayOftuples = [(Range<String.Index>?, Range<String.Index>?)]() 

沒有更多的抱怨聲明。但是,到了最後,我需要使用的startIndex和endIndex從元組數組,當我設法得到它喜歡這個

let myrange = arrayOftuples.first!.0.startIndex..< arrayOftuples.first!.0.endIndex 

我有抱怨類型的那個值

Range<String.Index>? 

has no startIndex。

至於我能理解,如果我想從元組獲得了startIndex和endIndex,我需要使用無自選的陣列,

var arrayOftuples = [(Range<String.Index>, Range<String.Index>)]() 

但我需要以某種方式從可選的元組只添加這不是(零,零)。當像這樣添加元組時

arrayOftuples += [mytuple!] 

它不接受這個。如果我使用這樣的條件

if mytuple != (nil, nil) 
{ 
    arrayOftuples += [mytuple] 
} 

它也不起作用。抱怨是運算符!=不能被應用。如何解決問題?

回答

1

該函數可能會返回可選的原因。你需要檢查這些選項是否先不爲零,然後解開它們並將它們插入到數組中。之後,你不應該有任何問題。

你可以解開他們這樣

if let t1 = touple.0, t2 = touple.1 { 
    let unwraped = (t1, t2) 
} 
+0

謝謝!有用。 – VYT