在数组中查找/删除闭包

时间:2015-01-29 09:12:06

标签: ios swift

我正在使用Swift开发第一个应用程序。 在我的一个类中我需要在数组中存储闭包。像活动经理一样:

typealias eventCallback = (eventName:String, data:[MasterModel]?) -> Void;

class MHttpLoader: NSObject
{
    var eventRegister : [String: [eventCallback]];

    class var instance : MHttpLoader
    {
        struct Static {
            static let instance : MHttpLoader = MHttpLoader(baseURL:NSURL(string:"http://192.168.0.11:3000"));
        }
        return Static.instance;
    }

    class func registerEvent(eventName:String, callback:eventCallback)
    {
        if var tab = MHttpLoader.instance.eventRegister[eventName]
        {
            tab.append(callback);
        }
        else
        {
            MHttpLoader.instance.eventRegister[eventName] = [callback];
        }
    }

    func fireEvent(eventName: String, data:[MasterModel]?)
    {
        if let tab = self.eventRegister[eventName]
        {
            for callback in tab
            {
                callback(eventName:eventName, data:data);
            }
        }
    }
}

所有这些代码工作得很好,问题是当我想从我的数组中删除一个闭包。 例如:

class func removeEvent(eventName:String, callback:eventCallback)
{
    if var tab :Array = MHttpLoader.instance.eventRegister[eventName]
    {
        if let index = find(tab, callback) as? Int
        {
            tab.removeAtIndex(index);
        }
    }
}

我有错误,说我的关闭不符合协议" Equatable"

我也尝试过:

class func removeEvent(eventName:String, callback:eventCallback)
{
    if var tab :Array = MHttpLoader.instance.eventRegister[eventName]
    {
        tab = tab.filter({ (currentElement) -> Bool in
            return currentElement != callback;
        });
    }
}

但我有错误:无法调用'!='使用类型'((eventCallback),eventCallback)'

的参数列表

这是我的问题,如何在数组中找到闭包索引或简单地比较闭包?

谢谢

0 个答案:

没有答案