我试图从数组保存Event对象中删除特定的Event对象(我自己的类)。这是我对数组的声明。
private var positiveEvents : [Event] = []
现在,我正在尝试从数组中删除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!")
}
}
}
我看到this问题,但我使用的是Swift 4,所以我没有索引(of:Event)方法。我当前解决方案的问题是,当使用“===”检查对象的相等性时,我偶尔会遇到错误:
有没有更好的方法呢?
答案 0 :(得分:6)
你应该避免强行解缠,特别是你的情况,因为数组很可能没有满足条件的元素。相反,您可以使用可选绑定(请注意,您可以将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!")
}
}
}