【发布时间】:2015-05-29 16:42:46
【问题描述】:
我有一个协议定义为...
@objc protocol MyDatasource : class {
var currentReportListObjects:[ReportListObject] { get };
}
还有一些代码在 Swift 中迭代返回的数组(作为 ObjC 的 NSArray)...
if let reportListObjects = datasource?.currentReportListObjects {
for reportListObject:ReportListObject? in reportListObjects {
if let report = reportListObject {
// Do something useful with 'report'
}
}
}
如果我的 reportListObjects 数组为 nil,我会在 for 循环中陷入无限循环。同样,如果数组中有数据,则对其进行迭代并完成“有用的事情”,直到到达数组的末尾,但循环不会中断并无限继续。
我做错了什么?还是我在这里遗漏了什么明显的东西?
【问题讨论】:
-
您的数组是
ReportListObject类型(非可选),但您是for-in表示ReportListObject?... 而NSArray可能是nil-已终止...将for-in中的类型更改为非可选(或者只是让它隐式推断类型)? -
谢谢。那行得通。可能会掉入一个危险的陷阱!!!