我使用Parse.com的注册功能,就像描述here一样。这是我的代码:
user.signUpInBackgroundWithBlock {
(succeeded: Bool!, error: NSError!) -> Void in
if error == nil {
// Hooray! Let them use the app now.
} else {
let errorString = error.userInfo["error"] as NSString
// Show the errorString somewhere and let the user try again.
}
}
}
不幸的是,我已将我的项目从swift 1.1更新为swift 1.2并得到以下编译器错误:
功能签名'(Bool!,NSError!) - > void与之不兼容 例外类型' @objc_block(Bool,NSError!) - > Void'
它位于以下行:
user.signUpInBackgroundWithBlock {
(succeeded: Bool!, error: NSError!) -> Void in
有人知道我怎么能这样做?谢谢!
答案 0 :(得分:7)
你成功的变量是'Bool!'但该块返回的是一个'Bool'(没有感叹号)。
解决方案是:
user.signUpInBackgroundWithBlock {
(succeeded: Bool, error: NSError!) -> Void in
if error == nil {
// Hooray! Let them use the app now.
} else {
let errorString = error.userInfo["error"] as NSString
// Show the errorString somewhere and let the user try again.
}
}
}
太了解有关期权go to the apple doc
的更多信息答案 1 :(得分:2)
我在使用块保存在后台时遇到了同样的问题。看起来parse返回" Bool不是Bool!" ...但是错误是NSError?除非你"!"它
something.saveInBackgroundWithBlock {
(succeeded: Bool, error: NSError?) -> Void in
code
}