1

我将 Xcode 更新到 6.3,发现新的 Swift 1.2 在我的代码中有一些新错误。

user.signUpInBackgroundWithBlock {
    (success:Bool!, error:NSError!) -> Void in

    if !(error != nil) {
        println("sign up successfully")

        var loginAlert: UIAlertController = UIAlertController(title: "Sign Up", message: "Sign Up Succeeded", preferredStyle: UIAlertControllerStyle.Alert)
        self.presentViewController(loginAlert, animated: true, completion: nil)
        loginAlert.addAction(UIAlertAction(title: "Okay", style:

我收到了这个错误:

无法使用类型为 ((Bool!, NSError!) -> void) 的参数列表调用 signUpInBackgroundWithBlock

我该如何解决?

另一个

@IBAction func endend(sender: AnyObject) {        
    if (PFUser.currentUser() == nil) {
        PFUser.logInWithUsernameInBackground(usernameTextField.text, password: passwordTextField.text){  
            (user:PFUser!, error:NSError!) -> Void in

            if user != nil {
                println("login chenggong")
                var tlvc = TimelineViewControllerTableViewController()                
                self.presentViewController(tlvc, animated: true, completion: nil)
            }
            else {
                println("failed")
            }        
        }    
    }
}

我收到了这个错误:

“UITextField”没有名为“text”的成员。

我有 3 个错误},它说

预期的“,”分隔符。

表达式列表中的预期表达式。

表达式中应有“)”。

我可以在 Swift 1.2 之前运行我的应用程序,但现在......

4

4 回答 4

1

以下代码对我有用:

PFUser.logInWithUsernameInBackground(username.text as String!, password: password.text as String!){
                (loggedInuser: PFUser?, signupError: NSError?) -> Void in
于 2015-04-18T20:56:16.483 回答
0

尝试改变:

 user.signUpInBackgroundWithBlock{(success:Bool!, error:NSError!) -> Void in

至:

 user.signUpInBackgroundWithBlock{(success:Bool?, error:NSError?) -> Void in
于 2015-04-19T20:07:24.273 回答
0

对于 Parse 注册块,当您强制解开布尔成功参数时,Swift 1.2 编译器不喜欢它。

删除“!” 在 'success:Bool' 之后应该删除你得到的错误。

尝试改变:

 user.signUpInBackgroundWithBlock{(success:Bool!, error:NSError!) -> Void in

至:

 user.signUpInBackgroundWithBlock{(success:Bool, error:NSError!) -> Void in
于 2015-04-13T19:50:59.740 回答
0

在 Xcode 中,转到 Edit > Convert... > To Latest Swift Syntax...

新版本中有几处语言语法更改,因此 Apple 提供了一个工具来帮助迁移旧的 Swift 代码。从我一直在阅读的内容来看,它在很大程度上很有用,但并不总是能解决 100% 的问题。希望它至少会减少您看到的错误数量。

于 2015-04-12T17:03:53.607 回答