将NSPersistentStoreResult强制转换为数组

Dau*_*aug 6 casting core-data ios swift swift3

嗨,我遇到以下代码的问题.具体来说,if let语句将Cast转换NSPeristentStoreResult为不相关类型[Item]始终失败警告.我正在使用Swift 3.01.

看起来这应该很简单.我正在关注的这本书是使用早期版本的Swift编写的.谢谢你的放纵.

func demo(){

let request = NSFetchRequest<Item>(entityName: "Item")

  do {
     if let items = try CDHelper.shared.context.execute(request) as? [Item] {
        for item in items {
           if let name = item.name {
              print("Fetched Managed Object = '\(name)'")
           }
        }
     }
  } catch {
     print("Error executing a fetch request: \(error)")
  }
 }
Run Code Online (Sandbox Code Playgroud)

sha*_*ght 15

使用fetch()而不是execute():

if let items = try CDHelper.shared.context.fetch(request)
...
Run Code Online (Sandbox Code Playgroud)

或者perform在您的上下文中使用:

 CDHelper.shared.context.perform {
      let fetchRequest: NSFetchRequest<Item> = Item.fetchRequest()            
      let items = try! fetchRequest.execute() 
      for item in items {
           if let name = item.name {
                print("Fetched Managed Object = '\(name)'")
           }
      }
}
Run Code Online (Sandbox Code Playgroud)