2015-04-12 1 views
1

Я обновил Xcode до 6.3 и нашел, что в моих кодах с новой Swift 1.2 появилась новая ошибка.Изменения в 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: 

Я получил эту ошибку:

Cannot invoke signUpInBackgroundWithBlock with an argument list of type ((Bool!, NSError!) -> void)

Как я могу это исправить?

Еще один

@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” does not have member named “text”.

И я получил 3 ошибки, о }, он говорит

Expected “,” separator.

Expected expression in list of expressions.

Expected “)” in expressions.

я могу пробежал приложение перед Swift 1.2, но сейчас ...

+1

'если (ошибка = ноль!)' Будет написано более благоразумно, как 'если ошибка == nil' Не могли бы вы также показать нам декларацию' метода signUpInBackgroundWithBlock'!? – Sulthan

+0

у вас нет двоеточия после имени пользователя – Sulthan

+0

Я не могу найти, где имя пользователя вы только что упомянули. Но спасибо за помощь! –

ответ

0

В Xcode перейдите в Edit> Convert ...> To Latest Swift Syntax ...

В новой версии есть несколько синтаксических изменений языка, поэтому Apple включила инструмент, помогающий перенести старый код Swift. Из того, что я читал, он во многом полезен, но не всегда разрешает 100% проблем. Надеюсь, это уменьшит количество ошибок, которые вы видите.

+0

Спасибо, но я получил больше ошибок lol –

0

Для блоков регистрации Parse компилятор Swift 1.2 не нравится, когда вы принудительно разворачиваете параметр логического успеха.

Снятие '!' после «успеха: Bool» следует удалить ошибки, которые вы получаете.

Try изменения:

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

To:

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

Это не работает, но все же спасибо за помощь. –

1

После код работал для меня:

PFUser.logInWithUsernameInBackground(username.text as String!, password: password.text as String!){ 
       (loggedInuser: PFUser?, signupError: NSError?) -> Void in 
0

Попробуйте изменить:

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

To:

user.signUpInBackgroundWithBlock{(success:Bool?, error:NSError?) -> Void in 
Смежные вопросы