Swift 2:尝试/捕捉非投掷功能

Mat*_*ler 12 try-catch swift swift2

我正在重构一个Obj-c类,其中有一个@try/@catchremoveObserver:.

在swift中执行相同的操作会触发警告,因为removeObserver可能会失败(当没有观察者时),但它不会引发任何错误.

知道如何实现相同的行为吗?

编辑:我的代码:

try {  
    self.removeObserver(self, forKeyPath: "LineDisplayChanged")
}
Run Code Online (Sandbox Code Playgroud)

Tom*_*art 0

要删除警告只需删除try { }. removeObserver:forKeyPath:抛出异常而不是错误。而且您无法在 Swift 中捕获异常,因此请确保仅在观察时才调用此方法,否则它将崩溃,并且在 Swift 中没有办法解决它。

您可以在 Objective-C 中编写一个类别来包装此调用并捕获异常并返回错误。