我正在关注AppCoda的一本好书,它正在研究IOS8,但现在却出现了很多错误:
// Load menu items from database
if let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext {
let fetchRequest = NSFetchRequest(entityName: "MenuItem")
var e: NSError?
menuItems = managedObjectContext.executeFetchRequest(fetchRequest, error: &e) as! [MenuItem]
if e != nil {
println("Failed to retrieve record: \(e!.localizedDescription)")
}
}
转换为IOS9后:
// Load menu items from database
if let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext {
let fetchRequest = NSFetchRequest(entityName: "MenuItem")
let e: NSError?
menuItems = (try! managedObjectContext.executeFetchRequest(fetchRequest)) as! [MenuItem]
if e != nil {
print("Failed to retrieve record: \(e!.localizedDescription)")
}
}
所以我改回来了#34;让我们回到"仍然收到警告=变量' e'从未发生变异;考虑改变让我们保持不变。我需要var这个块,我怎么能摆脱这个警告? 任何帮助都非常欢迎
答案 0 :(得分:2)
新try
表示未使用error
,而且您的代码确实没有使用它,您只需定义它然后检查是否发生了任何事情,这将永远不会是真的。您应该删除error
并使用catch
来处理问题情况。
答案 1 :(得分:0)
现在就是这样做的:
...
do {
let items = try context.executeFetchRequest(request)
// do something with items
}
catch { /* react to error */ }