【问题标题】:CoreData IOS9 Bug?CoreData IOS9 错误?
【发布时间】:2015-10-12 00:00:15
【问题描述】:

我正在关注 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)")
    }
}

所以我改回“let by var”,但仍然收到警告 = 变量 'e' 从未发生变异;考虑改变让常数。我在这个块中需要 var,我怎样才能摆脱这个警告? 任何帮助都非常受欢迎

【问题讨论】:

  • 如果你从不改变它,为什么你需要它成为var

标签: ios core-data swift2


【解决方案1】:

新的try 意味着error 没有被使用,实际上你的代码并没有真正使用它,你只需定义它,然后检查它是否发生了任何事情,这永远不会是真的。您应该删除error 并使用catch 来处理问题情况。

【讨论】:

    【解决方案2】:

    现在是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-12
      • 2015-10-03
      • 2015-11-27
      • 1970-01-01
      • 2015-12-29
      • 2015-12-28
      • 2019-03-22
      • 1970-01-01
      相关资源
      最近更新 更多