到目前为止,我遇到了像这样的问题:
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,但是如果收到错误,我就无法正确访问错误。
答案 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中的更改
,因此需要进行此更改