Swift 3转换错误/ NSError

Ana*_*and 11 objective-c nserror ios swift-protocols swift3

在尝试迁移到Swift 3时(在包含大约一半/半swift/objective-c代码的项目中),我遇到了一个问题.我们在objective-c中声明这个特定的协议,如下所示:

@protocol AProtocolDeclaration <NSObject>

- (void)someEventHappened:(nullable NSError *)error;

@end
Run Code Online (Sandbox Code Playgroud)

Swift编译器为上面的协议声明生成以下内容:

public protocol AProtocolDeclaration : NSObjectProtocol {

    public func someEventHappened(_ error: Error?)
}    
Run Code Online (Sandbox Code Playgroud)

当在a中实现协议concrete class (in swift)并尝试定义生成的方法时,我会继续得到类似的错误:无法转换Error to NSError.我不知道如何解决这个错误.有人可以建议吗?

JAL*_*JAL 0

我认为这是 Xcode 8 中 SourceKit 的一个错误。从 Xcode 8.1 和 8.2 beta 2 开始,包含参数的协议函数NSError已正确桥接到 Swift 3,如下所示Error

extension MyClass: AProtocolDeclaration {
    func someEventHappened(_ error: Error?) {
        print(error ?? "none")
    }
}
Run Code Online (Sandbox Code Playgroud)