Swift2将具有NSError参数的BOOL函数(objc代码)视为Void函数

时间:2015-09-19 03:14:30

标签: objective-c swift swift2

当我将Swift 1项目转换为Swift 2时发生了奇怪的事情,即Swift2将返回类型的BOOL函数视为返回类型Void函数。

例如,我的代码使用XMPPFramework,其中有一个定义如下的函数:

- (BOOL)authenticateWithPassword:(NSString *)password error:(NSError **)errPtr;

我曾经有一段代码可以做到这一点:

if (xmppStream!.authenticateWithPassword(password)) {
    println("authenticated");
}

现在它已更新为遵循Swift 2语法:

do {
    if let result = try xmppStream!.authenticateWithPassword(password) {
        print("authenticate");
    }
} catch _ {}

由于某种原因,swift 2将authenticateWithPassword视为void类型函数,因此上面的代码无法通过编译。

只是想知道是否有人遇到过相同的情况以及解决方案是什么。

感谢。

1 个答案:

答案 0 :(得分:1)

这是我的解决方案:

do {
    try xmppStream!.authenticateWithPassword(password)
    print("authenticate");
} catch let error as NSError {
    print("Error: \(error.localizedDescription)")
}