解析SDK方法在Xcode 6.3 Beta中不起作用

时间:2015-04-04 01:51:19

标签: ios xcode parse-platform

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

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(非beta)中运行此代码时,它工作正常。但在测试版中,它失败了,不允许我构建。任何想法,如果这将被清除或如果有我可以使用的不同实现。我尝试过只使用signUpInBackgroundWithTarget,但是如果收到错误,我就无法正确访问错误。

5 个答案:

答案 0 :(得分:9)

确保您使用的是SDK版本1.7.1,然后从闭包中删除类型应该可以解决问题:

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

答案 1 :(得分:2)

由于Swift 1.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")
        }
    }
}

Parse现在返回选项(?)而不是明确解开的对象(!)。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您使用的是哪个Parse SDK?他们几天前发布了1.7.1版,可以解决您的问题。

答案 4 :(得分:0)

变化:

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

(succeeded, error) -> Void in

由于Parse SDK中的更改

,因此需要进行此更改