了解有关解析最新SDK / Swift 1.2的语法问题

时间:2015-05-05 15:38:38

标签: ios swift parse-platform xcode-6.2

为什么第二个代码段工作而第一个代码不起作用?

此代码不起作用

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。

enter image description here

缩放错误消息:

enter image description here

1 个答案:

答案 0 :(得分:1)

  • 在第一个示例中,您分别明确指定了usererror的类型(PFUser!NSError!)。

  • 在第二个示例中,您允许隐式提供usererror的类型。

因此,第一个示例给出编译错误的事实必然意味着您的显式类型不再正确。它可能是惊叹号;尝试删除它们。

确定它们是什么类型的真正方法是使用第二个示例,编译它,然后将光标放在user内,然后放在error内并读取来自Xcode窗口右侧的快速帮助中的类型,就像我在这里:

enter image description here

这个小技巧为我解决了许多Swift类型的谜团!