swift swift2

Swift 2(executeFetchRequest): manejo de errores



swift2 (5)

Tengo un problema con el código que no puedo entender. Después de instalar Xcode 7 beta y convertir mi código swift a 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() }

Captura de pantalla:


A partir de Swift 2, los métodos de Cocoa que producen errores se traducen en funciones de Swift que arrojan un error.

En lugar de un valor de retorno opcional y un parámetro de error como en Swift 1.x :

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

en Swift 2, el método ahora devuelve un no opcional y arroja un error en el caso de error, que debe manejarse con try-catch:

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

Para obtener más información, consulte "Manejo de errores" en "Adopción de patrones de diseño de cacao" en la documentación "Uso de Swift con cacao y Objective-C" .


Prueba el siguiente código

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


Puedes probar este código:

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


Swift 3.0 En este ejemplo, PlayerList es una entidad / nombre de clase NSManagedObject (creado automáticamente por Xcode)

let request: NSFetchRequest<PlayerList> = 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]