我试图从数组保持事件对象中删除特定的Event对象(我自己的类).这是我对数组的声明.
private var positiveEvents : [Event] = []
Run Code Online (Sandbox Code Playgroud)
现在,这是我如何尝试从数组中删除Event对象.此方法(disposeOfflineEvents)每30秒调用一次,因此positiveEvents可能包含某些元素或根本不存在任何元素.
func disposeOfflineEvents() {
for event in positiveEvents {
if !event.ongoing {
positiveEvents.remove(at: positiveEvents.index(where: { $0 === event })!)
print("! - Disposing of an event!")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我看到了这个问题,但我使用的是Swift 4,所以我没有索引(of:Event)方法.我当前的解决方案的问题是,当使用"==="检查对象的相等性时,我偶尔会遇到错误:
有没有更好的方法呢?
一般来说,你应该避免强行展开,特别是你的情况,因为数组很可能没有满足条件的元素.相反,您可以使用可选绑定(请注意,您可以将for循环与组合使用where):
func disposeOfflineEvents() {
for event in positiveEvents where !event.ongoing {
if let index = positiveEvents.index(where: { $0 === event }) {
positiveEvents.remove(at: index)
print("! - Disposing of an event!")
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3398 次 |
| 最近记录: |