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

Bar*_*r27 5 interop objective-c typhoon swift swift2

我在Swift项目中使用Typhoon,需要使用@objc标记协议.我正在尝试将我的项目升级到Swift 2.

在我的iOS应用程序中,我的服务层将错误抛回UI.但是,尽管我付出了最大努力,但我收到了编译错误:

类型'ErrorThrower'不符合协议'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
}
Run Code Online (Sandbox Code Playgroud)

我看到这篇文章" 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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我也试过这个没有运气......

@objc protocol Throwable {
    func doSomethingAndReturnError(error:NSErrorPointer, someParam:AnyObject) -> Bool
}
Run Code Online (Sandbox Code Playgroud)

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

Jas*_*ues 2

不幸的是,根据我今天的研究,我相信 Swift 2 风格的异常与 Objective-C 不兼容,因此不适用于 Typhoon。