Swift 2 -抛出错误的@objc协议



我在一个Swift项目中使用台风,该项目需要用@objc标记协议。我正在尝试将我的项目升级到Swift 2。

在我的iOS应用程序中,我的服务层将错误返回给UI。然而,尽管我尽了最大的努力,我还是得到了一个编译错误:

类型' errorthrow '不符合'Throwable'协议

@objc protocol Throwable {
    func doSomething(someParam:AnyObject) throws
}
@objc class ErrorThrower : NSObject, Throwable {
    func doSomething(someParam: AnyObject) throws {
        NSLog("An error is about to be thrown")
        throw GenericError.Generic
    }
}
enum GenericError : ErrorType {
    case Generic
}

我看到了这篇文章"Swift类不符合Objective-C协议的错误处理"

所以,这让我尝试这样做:

@objc protocol Throwable {
    func doSomething(someParam:AnyObject) throws
}

class ErrorThrower : NSObject, Throwable {     
    @objc(doSomethingAndReturnError:someParam:)
    func doSomething(someParam: AnyObject) throws {
        NSLog("An error is about to be thrown")
        throw GenericError.Generic
    }
}

它在实现上没有抱怨@objc(…),但它仍然给出相同的不符合协议的错误。

我也试过这个,没有运气…

@objc protocol Throwable {
    func doSomethingAndReturnError(error:NSErrorPointer, someParam:AnyObject) -> Bool
}

在Swift 2中使用@objc声明协议并在方法上抛出错误的正确方法是什么?

不幸的是,从我今天的研究来看,我认为Swift 2风格异常与Objective-C不兼容,因此无法与Typhoon一起工作。

最新更新