为什么第二个代码段工作而第一个代码不起作用?
此代码不起作用:
func logIn() {
PFUser.logInWithUsernameInBackground(tv_username.text, password:tv_password.text) {
(user: PFUser!, error: NSError!) -> Void in
if user != nil {
// Yes, User Exists
//self.loginInitialLabel.text = "User Exists"
} else {
// No, User Doesn't Exist
}
}
}
此代码有效:
func logIn() {
PFUser.logInWithUsernameInBackground(tv_username.text, password:tv_password.text) {
(user, error) -> Void in
if user != nil {
// Yes, User Exists
//self.loginInitialLabel.text = "User Exists"
} else {
// No, User Doesn't Exist
}
}
}
以下是错误消息。我正在寻找一个明确的解释为什么一些在线文档有第一个例子但只有第二个有效。 Parse是否更改了他们的SDK而没有更改文档,或者这是Swift 1.2的一些工件更改?我正在使用XCode 6.3和Swift 1.2。
缩放错误消息:
答案 0 :(得分:1)
在第一个示例中,您分别明确指定了user
和error
的类型(PFUser!
和NSError!
)。
在第二个示例中,您允许隐式提供user
和error
的类型。
因此,第一个示例给出编译错误的事实必然意味着您的显式类型不再正确。它可能是惊叹号;尝试删除它们。
确定它们是什么类型的真正方法是使用第二个示例,编译它,然后将光标放在user
内,然后放在error
内并读取来自Xcode窗口右侧的快速帮助中的类型,就像我在这里:
这个小技巧为我解决了许多Swift类型的谜团!