【问题标题】:Adding optional tuple to the array将可选元组添加到数组
【发布时间】:2016-03-03 10:26:14
【问题描述】:

我有返回可选元组的函数

(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]
 }

它也不起作用。抱怨操作符 != 不能应用。如何解决问题?

【问题讨论】:

    标签: arrays swift tuples optional


    【解决方案1】:

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

    你可以这样解开它们

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

    【讨论】:

      猜你喜欢
      • 2015-05-11
      • 1970-01-01
      • 2014-08-05
      • 2021-12-27
      • 2012-01-23
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多