2016-12-01 48 views
4

嗨我在下面的代碼有問題。具體來說,if let語句將NSPeristentStoreResult中的Cast轉換爲不相關的類型[Item]總是會失敗警告。我正在使用Swift 3.01。將NSPersistentStoreResult投射到數組

看來這應該很簡單。我遵循的書是使用早期版本的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)") 
    } 
} 

回答

7

使用fetch()而不是​​:

if let items = try CDHelper.shared.context.fetch(request) 
... 

或您的環境中使用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)'") 
      } 
     } 
}