无法调用'过滤'使用类型'((_) - > _)'的参数列表

时间:2015-04-29 14:23:57

标签: swift

听起来很荒谬,但我无法修复这段代码:

self.runningScripts.filter({ $0 != scriptRunner })

无论我如何编写闭包,我总是会收到此错误:

  

无法调用'过滤'使用类型' ((_) -> _)'

的参数列表

runningScripts的定义如下:

var runningScripts = [ScriptRunner]()

ScriptRunner是Swift类(不从NSObject继承)

我在很多其他地方使用几乎没有问题。有什么建议吗?

2 个答案:

答案 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!!
        }
    }