parsingSDK方法在Xcode 6.3 Beta中不起作用

到目前为止,我遇到了这样的问题:

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

当我将这添加到Xcode我得到这个:

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

当我在Xcode 6.3(非testing版)中运行此代码时,它工作正常。 但在testing版中,它失败了,不会让我build立。 任何想法,如果这将被清除,或者如果有一个不同的实现,我可以使用。 我曾尝试使用signUpInBackgroundWithTarget,但我只是无法正确访问错误,如果收到。

确保你正在使用SDK 1.7.1版,然后从你的closures中删除types应该做的伎俩:

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

由于Swift1.2中新增了“Nullability Annotations”,所以你必须像这样重写上面的代码(使用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") } } } 

parsing现在返回optionals(?)而不是显式解开的对象(!)。

Swift的符号被改变了

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

注释之后:

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

所以你可以改变

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

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

你使用哪个parsingSDK? 他们几天前发布了1.7.1版本,可以解决你的问题。

更改:

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

 (succeeded, error) -> Void in 

由于Parse SDK中的更改,此更改是必需的