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

标签 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

最佳答案

  • 在第一个示例中,您指定了 user 的类型和 error分别显式(PFUser!NSError!)。

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

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

不过,找出它们是什么类型的真正方法是使用第二个示例,编译它,然后将光标放在 user 中。然后在里面 error并从 Xcode 窗口右侧的快速帮助中读取类型,就像我在这里所做的那样:

enter image description here

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

关于ios - 了解有关解析最新 SDK/Swift 1.2 的语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30057408/

相关文章:

ios - youtube 网址打不开

ios - 如何删除 UITableViewCell 第一行的垂直间距

uitableview - 从 UITableView 中的 query.whereKey ("column",nearGeoPoint) 逆序

iOS GPS 精度,我的 iPhone 4 上的 GPS 精度如何?

iphone - nibNameOrNil 的真正含义是什么?

iphone - 找不到 Cocos2D CGRectIntersect?

iOS Swift - 多个事件指示器(旋转器)出现在 web View 中

ios - 在不断变化的网格中寻找可能的单词

ios - 如何为解析类建模以包含 isliked、isfollowing 字段以及 PFQuery 结果

ios - 云通过 cloudKit 或解析方案数据