检查数组是否存在Swift

时间:2015-07-05 19:44:41

标签: arrays swift

在Objective-C中我会写:

@property (nonatomic, strong) NSMutableArray *privateArray;
if (!self.privateArray) {
    // Populate the privateArray
}

在填充数组之前检查数组是否已存在。怎么能在Swift中实现呢? 我试过通过翻译我的Obj-C代码来实现它但是给了Xcode错误“一元运算符'!”不能应用于'[AnyObject]''

类型的操作数

快速尝试:

private var privateArray: [AnyObject]?

if !privateArray {
    // Populate the array
}

在Swift中如何在填充数组之前检查数组是否存在? 在数组上使用.isEmpty同样简单吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

在Objective-C中,这称为延迟加载。您声明了一个属性,但只在第一次访问时才创建该属性。

你陷入困境的陷阱认为Swift只是围绕Objective-C的不同语法。

在Swift中你可以有一个懒惰的变种......

你可以这样声明......

@lazy var someArray: [String] = {
    return ["Hello", "World"]
}

这将做你想要的。

作为旁注。使用AnyObject通常不是一个好主意,特别是如果您知道数组将包含的对象类型。

此外,通过使用此方法,您不需要数组是可选的,因此可以避免整个展开过程。

您可以通过Google搜索来阅读有关懒惰属性的更多信息。我发现了这个,看起来很不错...... http://mikebuss.com/2014/06/22/lazy-initialization-swift/

答案 1 :(得分:0)

你应该写:

if (privateArray == nil) {
    // Populate the array
}