我刚刚更新到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!)
两者都给出了同样的错误。
答案 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显式用法,以避免此类编译器错误。