CoreData IOS9 Bug?

时间:2015-10-12 00:00:15

标签: ios core-data swift2

我正在关注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这个块,我怎么能摆脱这个警告? 任何帮助都非常欢迎

2 个答案:

答案 0 :(得分:2)

try表示未使用error,而且您的代码确实没有使用它,您只需定义它然后检查是否发生了任何事情,这将永远不会是真的。您应该删除error并使用catch来处理问题情况。

答案 1 :(得分:0)

现在就是这样做的:

...
do { 
  let items = try context.executeFetchRequest(request)
  // do something with items
}
catch { /* react to error */ }