(Swift)如何检查数组的特定索引是否为空?

时间:2016-05-31 22:38:22

标签: swift

var array:[Int] = []
var index = 5

if array[index] == nil {
    array[index] = 1
}

目前Xcode声明int不能取nil的值。所以这段代码不起作用。有没有办法产生相同的效果或验证特定索引是否为空?

2 个答案:

答案 0 :(得分:1)

如果数组可以保存nil个值,则其类型必须为optional - 因此:

var array:[Int?] = []

通常,在根据索引访问数组时,您需要确认索引是否在范围内。您可以使用

扩展Array
extension Array {
  func ref (i:Index) -> Element? {
    return i < count ? self[i] : nil
  }
}

然后用作:

array.ref(i)

[注意:这会将nil混淆为“超出范围”,nil为'可选数组中的值']

答案 1 :(得分:0)

将该属性声明为:

var array:[Int] = []

数组属性本身可以是空的(没有值) - 就像你在上面声明的那样,但它不能包含nil值,所以不需要检查nil。

如果要检查数组是否为空,请调用array.isEmpty,或者检查array.count&gt; 0应该可以做到。

如果需要在数组中存储空(非初始化的Int / nil),则数组将声明为:

var array:[Int?] = []

在这种情况下,数组可以包含整数或nil值。在这种情况下,您需要在使用之前安全地打开可选项,例如:

var array:[Int?] = [1, 2, nil, 4]    
for item in array {
      if let item = item {
        print("item is \(item)")
      } else {
        print("item is nil")
      }
    }

    //    item is 1
    //    item is 2
    //    item is nil
    //    item is 4