Swift 3转换错误/ NSError

时间:2016-09-11 12:02:19

标签: ios objective-c swift3 swift-protocols nserror

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

    if groups[1] != '':
        phoneNum = ' '.join(groups[1].lstrip('(').rstrip(')'), groups[3])
    else:
        phoneNum = groups[3]

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

@protocol AProtocolDeclaration <NSObject>

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

@end

当在public protocol AProtocolDeclaration : NSObjectProtocol { public func someEventHappened(_ error: Error?) } 中实现协议并尝试定义生成的方法时,我会继续收到类似的错误:无法转换concrete class (in swift)。我不知道如何解决这个错误。请问有人建议吗?

1 个答案:

答案 0 :(得分: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")
    }
}