MagicalRecord saveWithBlock 用法现在无法在 XCode 7 beta 5 下编译

MagicalRecord saveWithBlock usage now fails to compile under XCode 7 beta 5

我刚刚更新到 XCode 7 的 beta 5,现在在以下 Swift 代码上遇到编译错误:

MagicalRecord.saveWithBlock({ (localContext : NSManagedObjectContext!) in
    // ... Save models here ...
    }, completion: { (success : Bool, error : NSError!) in
    // ... Handle completion here ...
})

在 XCode 7 的先前版本中,编译正常,但我现在得到:

Cannot invoke 'saveWithBlock' with an argument list of type '((NSManagedObjectContext!) -> (), completion: (Bool, NSError!) -> ())'

我尝试将 -> Void(当我尝试重新添加调用时自动完成)和 -> Void! 添加到参数中,但看到相同的错误。

这是语言更改还是此 XCode 版本中的错误?

编辑(ETC 08/08/2015 下午 5 点 42 分):在没有完成处理程序的情况下调用 savedWithBlock 似乎编译正常:

MagicalRecord.saveWithBlock { (localContext: NSManagedObjectContext!) -> Void in
   // ... Save models here ...
}

编辑(ETC 08/11/2015 上午 8 点 32 分):根据@Gerd Castan 的推荐,我还尝试将完成参数更改为:

completion: { (success : Bool, error : ErrorType!)

completion: { (success : ObjCBool, error : ErrorType!)

两者都给出了相同的错误。

Apple 将 NSError 替换为 ErrorType。

将您自己对 NSError 的显式使用替换为 ErrorType 以避免此类编译器错误。

这似乎已通过 XCode 7 Beta 6 修复。语法:

MagicalRecord.saveWithBlock({ (localContext: NSManagedObjectContext!) -> Void in
    // Save model here
}) { (success: Bool, error: NSError!) -> Void in
    // Handle result here
}

编译无误。