Analyser les methods SDK ne fonctionne pas dans Xcode 6.3 bêta

Jusqu'à présent, j'ai des problèmes avec des blocs comme celui-ci:

user.signUpInBackgroundWithBlock { (succeeded: Bool!, error: NSError!) -> Void in if error == nil { println("success") } else { println("\(error)"); // Show the errorSsortingng somewhere and let the user try again. } } 

Quand j'ajoute ceci dans Xcode, j'ai ceci:

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

Quand j'exécute ce code dans Xcode 6.3 (non beta) cela fonctionne très bien. Mais dans la version bêta, il échoue et ne me permet pas de build. Toutes les idées si cela sera éclairci ou s'il y a une implémentation différente que je pourrais utiliser. J'ai essayé d'utiliser simplement le signUpInBackgroundWithTarget mais je ne suis pas capable d'accéder correctement à l'erreur si j'en reçois un.

Assurez-vous que vous utilisez SDK version 1.7.1, puis en supprimant les types de votre fermeture devrait faire l'affaire:

 user.signUpInBackgroundWithBlock { (succeeded, error) -> Void in if error == nil { println("success") } else { println("\(error)"); // Show the errorSsortingng somewhere and let the user try again. } } 

En raison du nouvel ajout de "Nullability Annotations" à Swift 1.2, vous devez réécrire le code ci-dessus comme ceci (en utilisant Parse 1.7.1+):

 user.signUpInBackgroundWithBlock { (succeeded: Bool, error: NSError?) -> Void in if let error = error { println(error) // there is an error, print it } else { if succeeded { println("success") } else { println("failed") } } } 

Parse renvoie maintenant des optionnels (?) Au lieu d'objects explicitement déballés (!).

La notation de Swift est modifiée

 class AAPLList : NSObject, NSCoding, NSCopying { // ... func itemWithName(name: Ssortingng!) -> AAPLListItem! func indexOfItem(item: AAPLListItem!) -> Int @NSCopying var name: Ssortingng! { get set } @NSCopying var allItems: [AnyObject]! { get } // ... } 

Après les annotations:

 class AAPLList : NSObject, NSCoding, NSCopying { // ... func itemWithName(name: Ssortingng) -> AAPLListItem? func indexOfItem(item: AAPLListItem) -> Int @NSCopying var name: Ssortingng? { get set } @NSCopying var allItems: [AnyObject] { get } // ... } 

Donc vous pouvez changer

(succeeded: Bool!, error: NSError!) -> Void in

à

(success: Bool, error: NSError?) -> Void in

Quel SDK Parse utilisez-vous? Ils ont sorti la version 1.7.1 il y a quelques jours qui devrait résoudre votre problème.

Changement:

 (succeeded: Bool!, error: NSError!) -> Void in 

à

 (succeeded, error) -> Void in 

Cette modification est requirejse en raison des modifications apscopes au kit Parse SDK