2015-04-04 12 views
7

到目前为止,我有问题的工作与块这样的:解析SDK方法不是在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(非测试版)中工作正常。但在测试版中,它失败了,不会让我建立。任何想法,如果这将被清除,或者如果有一个不同的实现,我可以使用。我曾尝试使用signUpInBackgroundWithTarget,但我只是无法正确访问错误,如果收到。

回答

0

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

+0

有什么特别的,我需要做升级到1.7.1?我删除了1.7.0,并在1.7.1中拖动,我仍然得到相同的错误 – 2015-04-04 20:57:45

+0

不......它在发行说明中说它应该修复你的问题,所以它可能是东西的东西 – nick9999 2015-04-04 20:58:33

+0

好吧,我可以尝试从头开始一个新项目,看看我是否能够得到它。不过谢谢。 – 2015-04-04 20:59:18

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. 
    } 
} 
+0

这对我来说诡计!谢谢! – AndyDev 2015-04-09 02:03:49

2

由于新增加的“空性集注”斯威夫特1.2,你必须重写上面的代码所示(使用解析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") 
     } 
    } 
} 

解析现在返回自选的,而不是明确地展开对象(?)(!)。

+0

奇怪,但Xcode显示错误:'不能用类型为'((Bool,NSError?) - > Void)'的参数列表调用'signUpInBackgroundWithBlock'' – orkenstein 2015-08-16 08:40:26

+0

@orkenstein你至少在Parse 1.7.1上? – 2015-08-17 16:08:28

0

变化:

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

(succeeded, error) -> Void in 

这需要改变由于斯威夫特的解析SDK

1

符号的变化改变

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