Swift 3 次转化 Error/NSError
Swift 3 conversion Error/NSError
在尝试迁移到 Swift 3(在一个包含大约 half/half swift/objective-c 代码的项目中)时,我遇到了一个问题。我们在 objective-c 中这样声明这个特定的协议:
@protocol AProtocolDeclaration <NSObject>
- (void)someEventHappened:(nullable NSError *)error;
@end
Swift 编译器为上面的协议声明生成以下内容:
public protocol AProtocolDeclaration : NSObjectProtocol {
public func someEventHappened(_ error: Error?)
}
并且在 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")
}
}
在尝试迁移到 Swift 3(在一个包含大约 half/half swift/objective-c 代码的项目中)时,我遇到了一个问题。我们在 objective-c 中这样声明这个特定的协议:
@protocol AProtocolDeclaration <NSObject>
- (void)someEventHappened:(nullable NSError *)error;
@end
Swift 编译器为上面的协议声明生成以下内容:
public protocol AProtocolDeclaration : NSObjectProtocol {
public func someEventHappened(_ error: Error?)
}
并且在 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")
}
}