Errore di Coredata “data: “

Cerco di estrarre i dati da CoreData con il seguente codice

NSFetchRequest *request = [[NSFetchRequest alloc] init]; request.entity = [NSEntityDescription entityForName:@"Cave" inManagedObjectContext:self.context]; request.predicate = [NSPredicate predicateWithFormat:@"(latitude > 0) AND (longitude > 0)"]; NSError *error; NSLog(@"%@",[self.context executeFetchRequest:request error:&error]); NSLog(@"%@",[error localizedDescription]); 

CoreData dovrebbe avere 9 oggetti corrispondenti e trova i 9 oggetti. Quindi il predicato dovrebbe funzionare ma ottengo questo nella console

 2011-09-05 07:41:42.267 CaveConditions[6930:11903] ( " (entity: Cave; id: 0x7367880  ; data: )", " (entity: Cave; id: 0x7356e20  ; data: )", " (entity: Cave; id: 0x7363e60  ; data: )", " (entity: Cave; id: 0x7356be0  ; data: )", " (entity: Cave; id: 0x733ad80  ; data: )", " (entity: Cave; id: 0x7333e70  ; data: )", " (entity: Cave; id: 0x7361810  ; data: )", " (entity: Cave; id: 0x7360110  ; data: )", " (entity: Cave; id: 0x73303c0  ; data: )" ) 

Funzionava perfettamente bene fino a quando ho fatto il seguente cambiamento in Cave.m che è l’entity framework

Ho aggiunto MKAnnotation come delegato in Cave.h e ho aggiunto questo codice in Cave.m

 - (CLLocationCoordinate2D)coordinate { CLLocationCoordinate2D location; location.latitude = [self.latitude doubleValue]; location.longitude = [self.longitude doubleValue]; return location; } 

C’è un modo per eseguire il debug di questo?

Questo comportamento è previsto, i dati principali non restituiscono oggetti completi finché non è necessario accedere ai valori persistenti degli oggetti. Ciascuno dei tuoi oggetti restituiti sarà un ‘errore’ fino a questo punto.

Puoi forzare la richiesta di recupero per restituire oggetti completi usando [request setReturnsObjectsAsFaults:NO] , ma nella maggior parte dei casi ciò che hai andrà bene. Guarda la documentazione di NSFetchRequest per maggiori informazioni.

Se si accede a una delle proprietà, i dati di base andranno all’archivio permanente e recupereranno il resto dei valori, quindi si otterrà la descrizione completa nei registri.

Questo sembra essere un malinteso così comune che ho deciso di scrivere a riguardo, qui .

Ho affrontato lo stesso problema mentre estraevo dati da CoreData! Quindi, ho seguito il modo in cui @jrturton l’ha istruito e implementato in Swift 3 :

Passaggio 1: aggiungere import CoreData

Passaggio 2: aggiungi il codice qui sotto. .

 let context = ( UIApplication.shared.delegate as! AppDelegate ).persistentContainer.viewContext var request = NSFetchRequest() request = Your_Entity_Name.fetchRequest() request.returnsObjectsAsFaults = false do { let arrayOfData = try context.fetch(request) } catch { // Handle the error! } 

Spero, ti aiuterà. 🙂