迁移到Swift 3后,当我尝试执行以下操作时出错:
self.publicDB.save(listRecord, completionHandler: { (record, error) -> Void in
if let saveError = error {
NSLog("There was an error saving the record: %@", saveError)
}...
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我为什么这是我可以做的相对容易产生输出?
错误是NSLog unavailable: variadic function unavailable.
mat*_*att 10
尽管存在"可变"红鲱鱼,但问题在于我们不再能够自动桥接到Objective-C类型; 你必须明确地过桥,你自己.写入saveError as NSError以获取Objective-C样式对象.
NSLog不能与Swift Object一起使用,完成处理程序传递的错误是Error not NSError.
所以将代码更改为
self.publicDB.save(listRecord, completionHandler: { (record, error) -> Void in
if let saveError = error as? NSError {
NSLog("There was an error saving the record: %@", saveError)
}...
Run Code Online (Sandbox Code Playgroud)
或编写自己的Error扩展CustomDebugStringConvertible协议实现
class MyError: Error, CustomDebugStringConvertible {
var debugDescription: String {
return "The cause of error is xxx"
}
}
Run Code Online (Sandbox Code Playgroud)
然后将完成设置为emit MyError而不是Error
| 归档时间: |
|
| 查看次数: |
6415 次 |
| 最近记录: |