2015-10-12 5 views
0

Я выполняю большую книгу из AppCoda, он работал на IOS8 но дают много ошибок в настоящее время:Ошибка CoreData IOS9?

// 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)") 
    } 
} 

Так что я изменить обратно «пусть по вар» и все еще получать предупреждение = Variable 'e' никогда не мутировалось; рассмотреть возможность изменения константы. Мне нужен var в этом блоке, как я могу избавиться от этого предупреждения? Любая помощь более чем приветствуется

+0

Зачем вам это нужно, чтобы быть 'var', если вы никогда не мутирует его? –

ответ

2

Новый try означает, что error не используется, и на самом деле ваш код не использует его на самом деле, вы просто определить его, а затем проверить, если что-то случилось с ней, что никогда не будет будь настоящим. Вы должны удалить error и использовать catch для обработки проблемных ситуаций.

0

Это то, как это делается сейчас:

... 
do { 
    let items = try context.executeFetchRequest(request) 
    // do something with items 
} 
catch { /* react to error */ } 
Смежные вопросы