当我将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类型函数,因此上面的代码无法通过编译。
只是想知道是否有人遇到过相同的情况以及解决方案是什么。
感谢。
答案 0 :(得分:1)
这是我的解决方案:
do {
try xmppStream!.authenticateWithPassword(password)
print("authenticate");
} catch let error as NSError {
print("Error: \(error.localizedDescription)")
}