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

时间:2015-08-08 21:14:26

标签: ios xcode swift magicalrecord

我刚刚更新到XCode 7的beta 5,现在我在以下Swift代码上收到了一个compliation错误:

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

在以前的XCode 7版本中,编译好了,但我现在得到了:

  

无法调用' saveWithBlock'使用类型'((NSManagedObjectContext!) - >()的参数列表,完成:( Bool,NSError!) - >())'

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

这是语言更改还是此XCode构建中的错误?

编辑(美国东部时间2015年8月8日下午5点22分):在没有完成处理程序的情况下调用savedWithBlock似乎编译好了:

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

无错误编译。

答案 1 :(得分:0)

Apple用ErrorType替换了NSError。

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