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
.我不知道如何解决这个错误.有人可以建议吗?
我认为这是 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)