我正在从 Swift 调用一些旧的 Objective-C 代码,它经常会抛出这个错误,即使看起来没有出错:
do {
try objCObject.someMethod()
}
catch {
print(error)
// Trying to handle the error here
}
Run Code Online (Sandbox Code Playgroud)
该方法的 Objective-C 签名如下所示:
- (BOOL) someMethodWithError: (NSError **) outError;
Run Code Online (Sandbox Code Playgroud)
在内部放置一个断点,catch我可以使用 LLDB 控制台看到这一点。
(lldb) po error
Foundation._GenericObjCError.nilError
(lldb) po error as NSError
Error Domain=Foundation._GenericObjCError Code=0 "(null)"
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,我该如何处理?当我尝试在 Swift 中为此编写一个特殊案例时,我得到了这个:
/Path/To/My Code.swift:200:27: error: module 'Foundation' has no member named '_GenericObjCError'
catch Foundation._GenericObjCError.nilError {
^~~~~~~~~~ ~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)