Swift 2.1.1 中的获取请求

Fetch request in Swift 2.1.1

我正在尝试将我的 Swift 1 代码转换为 Swift 2.1.1 代码。 所以我正在尝试添加一个 fetchRequest。

在 Swift 1 我这样做了:

if let results = context.executeFetchRequest(fetchRequest, error:&error), 
   let managedObject = results.first as? NSManagedObject {
       context.deleteObject(managedObject)
    }

let saveError: NSError?
context.save(nil)

 var error: NSError?
 let fetchedResults = managedContext.executeFetchRequest(fetchRequest) as! [NSManagedObject]?
 if let results = fetchedResults {
      people = results
   } 
   else {
      print("Could not fetch \(error), \(error!.userInfo)")
   }

Swift 2.1(第二个请求 -> 无效):

do {
  let fetchedResults = try managedContext.executeFetchRequest(fetchRequest) as! [NSManagedObject]
   // success if it gets here
   if let results = fetchedResults {
        people = results
    }
 } catch let error as NSError {
    // failed so print error
    print("Error: \(error.localizedDescription)")
 }

行中的错误 (if let results... & let fetchedResults...):

Initializer for conditional binding must have Optional type, not '[AnyObject]'

Call can throw, but is not marked with 'try' and the error is not handled

行中的错误 (let fetchedResults...):

Call can throw, but is not marked with 'try' and the error is not handled

Cannot downcast from '[AnyObject]' to a more optional type '[NSManagedObject]?'

你能帮我把它翻译成Swift 2.1.1吗? 感谢您的帮助!

您可以将其包装在 do catch 块中。如果 let results 行失败,它将打印错误。

do {
    let results = try context.executeFetchRequest(fetchRequest)
    // success if it gets here
    if let managedObject = results.first as? NSManagedObject {
        context.deleteObject(managedObject)
    }
} catch let error as NSError {
    // failed so print error
    print("Error: \(error.localizedDescription)")
}

编辑

第二个请求:

do {
  let fetchedResults = try managedContext.executeFetchRequest(fetchRequest)
   // success if it gets here
   if let results = fetchedResults as? [NSManagedObject]{
        people = results
    }
 } catch let error as NSError {
    // failed so print error
    print("Error: \(error.localizedDescription)")
 }