Swift 2 (executeFetchRequest): tratamento de erros

Eu tenho algum problema com o código que não consigo descobrir. Depois de instalar o Xcode 7 beta e converter meu código rápido para o Swift 2

Código:

override func viewDidAppear(animated: Bool) { let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let context: NSManagedObjectContext = AppDel.managedObjectContext let request = NSFetchRequest(entityName: "PlayerList") list = Context.executeFetchRequest(request) tableView.reloadData() } 

ScreenShot:

insira a descrição da imagem aqui

A partir do Swift 2, os methods Cocoa que produzem erros são traduzidos para funções Swift que lançam um erro.

Em vez de um valor de retorno opcional e um parâmetro de erro como no Swift 1.x :

 var error : NSError? if let result = context.executeFetchRequest(request, error: &error) { // success ... list = result } else { // failure println("Fetch failed: \(error!.localizedDescription)") } 

No Swift 2, o método agora retorna um não opcional e lança um erro no caso de erro, que deve ser tratado com try-catch:

 do { list = try context.executeFetchRequest(request) // success ... } catch let error as NSError { // failure print("Fetch failed: \(error.localizedDescription)") } 

Para obter mais informações, consulte “Tratamento de erros” em “Adotando padrões de design do Cocoa” na documentação “Usando o Swift com o Cocoa e o Objective-C” .

Você poderia tentar este código:

 let result = (try! self.manageContext.executeFetchRequest(FetchRequest)) as! [NSManageObjectClass] 

Swift 3.0 Neste exemplo PlayerList é NSManagedObject entidade / nome da class (auto criado pelo Xcode)

 let request: NSFetchRequest = PlayerList.fetchRequest() var result:[PlayerList]? do{ //Succes result = try context.fetch(request) }catch let error as NSError { //Error print("Error \(error)") } print("result: \(result)") 
 var results = [YourEntity]? results = try! self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [YourEntity] 

Experimente o código abaixo

  override func viewWillAppear(animated: Bool) { let appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate) let context = appDel.managedObjectContext let request = NSFetchRequest(entityName:"Users") do { let results = try context.executeFetchRequest(request) itemList = results as! [NSManagedObject] } catch let error as NSError { print("Could not fetch \(error), \(error.userInfo)") } }