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
}
编译无误。
我刚刚更新到 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
}
编译无误。