听起来很荒谬,但我无法修复这段代码:
self.runningScripts.filter({ $0 != scriptRunner })
无论我如何编写闭包,我总是会收到此错误:
无法调用'过滤'使用类型'
的参数列表((_) -> _)
'
runningScripts
的定义如下:
var runningScripts = [ScriptRunner]()
和ScriptRunner
是Swift类(不从NSObject继承)
我在很多其他地方使用几乎没有问题。有什么建议吗?
答案 0 :(得分:7)
如果您没有ScriptRunner
符合Equatable
,则可以收到该错误:
class ScriptRunner : Equatable {
// the rest of your implementation here
}
func ==(lhs: ScriptRunner, rhs: ScriptRunner) -> Bool {
return ... // change this to whatever test that satisfies that lhs and rhs are equal
}
答案 1 :(得分:1)
我需要这样一个明确的演员:
@NSManaged private var storage: [String]
private var objects: Set<String>?
func remove(element:String) {
initSetIfNeeded()
if(objects!.contains(element)) {
objects!.remove(element)
storage = storage.filter({($0 as NSObject) !== (element as NSObject)}) // Explicit cast here!!
}
}