objective-c - Swift 2 - @objc 抛出错误的协议(protocol)

标签 objective-c swift interop swift2 typhoon

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

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

Type 'ErrorThrower' does not conform to protocol '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 class does not conform to Objective-C protocol with error handling

所以,这让我尝试了这样的事情:

@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(...),但它仍然给出相同的不符合协议(protocol)的错误。

我也尝试过,但没有成功...

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

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

最佳答案

不幸的是,根据我今天的研究,我认为 Swift 2 样式异常与 Objective-C 不兼容,因此不适用于 Typhoon。

关于objective-c - Swift 2 - @objc 抛出错误的协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32195591/

相关文章:

ios - rx_itemsWithCellFactory 调用语法

ios - 如何快速制作带约束的动画?

objective-c - Objective-C 方法调用中前缀/后缀增量之间的区别?

objective-c - 绑定(bind)方法与委托(delegate)

ios - 如何在单击 TableViewCell 中的按钮时增加标签和单元格大小。

ios - 附加文本时,由 NSTextStorage 支持的 UITextView 未更新

c# - 使用 FlatBuffers 从 C# 序列化到 native 内存缓冲区

wpf - 确定打开的 WPF 窗口是否在任何监视器上可见

c# - 如何编码指向结构指针数组的指针?

ios - 从 @synchronized block 内的方法返回