将可选元组添加到数组

时间:2016-03-03 10:26:15

标签: arrays swift tuples optional

我有函数返回可选元组

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

然后,我需要将这个元组添加到我声明为

的元组数组中
var arrayOftuples = [(Range<String.Index>, Range<String.Index>)]()

我正在将元组添加到数组中,就像这样

arrayOftuples += [mytuple]

它告诉我操作符+ =不能应用于操作数

 [(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>? 

没有成员startIndex。

据我所知,如果我想从元组中获取startIndex和endIndex,我需要使用没有选项的数组,

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

但是我需要以某种方式从可选元组中添加不是(nil,nil)的元组。当像这样添加元组时

arrayOftuples += [mytuple!]

它不接受这个。如果我使用这样的条件

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

它也无法正常工作。投诉是那个运算符!=无法应用。如何解决问题?

1 个答案:

答案 0 :(得分:1)

函数可能有原因返回选项。您需要先检查这些选项是否为零,然后打开它们并将它们插入到数组中。在那之后你不应该有任何问题。

你可以像这样打开它们

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