【发布时间】:2014-06-30 13:04:05
【问题描述】:
在 Objective-C 中,如果我有以下属性:
@property (strong, nonatomic) NSArray * myArray;
在myArray 中返回多个对象的方法如下所示:
- (NSInteger) numberOfObjectsInMyArray
{
return [self.myArray count];
}
这将返回数组中对象的数量,如果myArray == nil,则返回0;
我能想到的在 Swift 中执行此操作的最佳等价物是:
var myArray: Array<String>?
func numberOfObjectsInMyArray() -> Int
{
return myArray ? myArray!.count : 0
}
因此检查可选数组是否包含一个值,如果是则解包数组并返回该值,否则返回 0。
这是正确的方法吗?还是有更简单的?
【问题讨论】:
-
也许返回一个可选的
Int?? -
可选的
Int不是必须的,因为这里每种情况都有一个值返回值。 -
return myArray?.count... 是的,肯定更短。但当然,这取决于在允许选项的地方使用的结果。例如func numberOfSectionsInTableView(tableView: UITableView!) -> Int不好 -
为什么要为 nil 数组返回 0?一个空数组有 0 个元素。 nil 数组不存在。有根本区别。
-
@ashleyMills,我已经更新了我的答案:有任何理由拥有一个可选数组吗?