我有函数返回可选元组
(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]
}
它也无法正常工作。投诉是那个运算符!=无法应用。如何解决问题?
答案 0 :(得分:1)
函数可能有原因返回选项。您需要先检查这些选项是否为零,然后打开它们并将它们插入到数组中。在那之后你不应该有任何问题。
你可以像这样打开它们
if let t1 = touple.0, t2 = touple.1 {
let unwraped = (t1, t2)
}