无法调用'saveInBackgroundWithBlock'

时间:2015-03-05 22:45:09

标签: ios parse-platform swift

我在GitHub,parse.com& amp;别的,没有运气。问题是当我为PFObject调用saveInBackgroundWithBlock时,我收到以下错误:

  

无法使用类型'((Bool,NSError) - > Void)'的参数列表调用'saveInBackgroundWithBlock'

我正在使用Xcode 6.3 beta 2.所有框架都加载到项目中(包括Bolts&amp; Parse,但不是由parse.com ParseCrashReporting&amp; ParseUI提供),<Parse/Parse.h>&amp;偶数<Bolts/Bolts.h>通过Bridge Header。

var score = PFObject(className: "score")
    score.setObject("Rob", forKey: "name")
    score.setObject(95, forKey: "scoreNumber")
    score.saveInBackgroundWithBlock {
        (success: Bool!, error: NSError) -> Void in
        if success == true {
            println("Score created with ID: \(score.objectId)")
        } else {
            println(error)
        }
    }

有什么想法吗?

3 个答案:

答案 0 :(得分:9)

error参数应该是隐式解包的可选项,而不是success参数:

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

但是,除非您因任何原因需要指定类型,否则我建议您将闭包简单地用作:

(success, error) in

不太容易出现类型声明错误。

答案 1 :(得分:7)

在Swift 1.2中,.saveInBackgroundWithBlock的声明应如下所示:

Void saveInBackgroundWithBlock(block: PFBooleanResultBlock?(Bool, NSError?) -> Void)

所以应该如下:

score.saveInBackgroundWithBlock {
        (success: Bool, error: NSError?) -> Void in

答案 2 :(得分:1)

该方法需要使用success上的error设置!error个变量:

(success: Bool, error: NSError!)
              ^               ^

但您已将!设置为错误的变量:

(success: Bool!, error: NSError) 

如你所见:

enter image description here