从Objective-C访问符合CustomNSError的Swift类的属性会导致崩溃

时间:2017-04-18 23:23:09

标签: objective-c swift

我有一个符合CustomNSError的类,如下所示:

class ErrorConformingToCustomNSError: NSObject, CustomNSError
{
    public static let errorDomain: String = "SomeErrorDomain"
    public var errorCode: Int { return self.code }
    public var errorUserInfo: [String : Any] { return [:] }

    let property: String = "I'm a property of the CustomNSError"
}

它从Swift库中抛出,但我在用Objective-C编写的遗留应用程序中捕获它。从应用程序,出于调试目的,我想打印错误对象的一些属性:

NSError* error = nil;
[SomeClass methodThrowingCustomNSError:&error];
ErrorConformingToCustomNSError* castedError = (ErrorConformingToCustomNSError*)error;

NSLog(@"%@", castedError.property);

执行NSLog时,我得到一个无法识别的选择器错误,而不是获取print语句:

  

2017-04-18 15:59:54.211051 errortest [47443:314797] ***由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [_ SwiftNativeNSError属性]:无法识别选择器发送到实例0x100b03810'

如果我将NSError子类化而不是符合CustomNSError,那么一切似乎都能正常工作。 Here is a gist showing the two scenarios - 您可以粘贴到新的MacOS项目中并查看崩溃。我在Xcode版本8.3上。

我是否遇到过语言错误,或者我只是做错了什么?

0 个答案:

没有答案