var array:[Int] = []
var index = 5
if array[index] == nil {
array[index] = 1
}
目前Xcode声明int不能取nil的值。所以这段代码不起作用。有没有办法产生相同的效果或验证特定索引是否为空?
答案 0 :(得分:1)
如果数组可以保存nil
个值,则其类型必须为optional
- 因此:
var array:[Int?] = []
通常,在根据索引访问数组时,您需要确认索引是否在范围内。您可以使用
扩展Arrayextension 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