NSFetchRequest devuelve el número correcto de objetos, pero cada objeto contiene atributos nil

StackOverflow https://stackoverflow.com/questions/2406021

  •  18-09-2019
  •  | 
  •  

Pregunta

No puedo entender por qué esto está ocurriendo. Puedo añadir al contexto. Pero cuando puedo recuperar los objetos, devuelve el número correcto de objetos, sino los atributos de los objetos son nulos.

Estoy añadiendo 3 casos con este código:

+ (BOOL) addStoreWithID: (NSNumber *) Latitud ID: (NSNumber *) Latitud Longitud: (NSNumber *) longitud Nombre: (NSString *) Nombre {

Stores *store = (Stores *)[NSEntityDescription
                    insertNewObjectForEntityForName:@"Stores" 
                    inManagedObjectContext:[[SharedResources instance] managedObjectContext]];

store.ID = ID;
store.Latitude = latitude;
store.Longitude = longitude;
store.Name = name;
NSError *error;
if(![[[SharedResources instance] managedObjectContext] save:&error])
{
    //Handle the error
    return NO;
}
return YES;

} Me sale el resultado: 2010-03-07 19: 19: 37.060 GamePouch_iPhone [11337: 207] Nombre del negocio es Starbucks (BGF) continuar 2010-03-07 19: 19: 37.933 GamePouch_iPhone [11337: 207] Nombre del negocio es Dunkin Donuts (BGF) continuar 2010-03-07 19: 19: 38.717 GamePouch_iPhone [11337: 207] Nombre del negocio es Krispy Kreme

Me han confirmado que este código es visitado tres veces y ninguno de los atributos son nulas.

A continuación, cuando intento de recuperarlo, yo uso el siguiente código:

+ (*) NSMutableArray fetchAllObjects {

NSFetchRequest *request;
request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Stores" inManagedObjectContext:[[SharedResources instance] managedObjectContext]];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"ID" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error;
NSMutableArray *array = [[[SharedResources instance] managedObjectContext] executeFetchRequest:request error:&error];
[request release];
[sortDescriptor release];
[sortDescriptors release];
for(int i=0;i<3;i++)
{
    Stores *tempStore = (Stores *)[array objectAtIndex:i];
    NSLog(@"store name is %@",[tempStore Name]);
}
return array;

}

Me sale el resultado: 2010-03-07 19: 21: 00,504 GamePouch_iPhone [11337: 207] nombre de la tienda es (null) (BGF) continuar 2010-03-07 19: 21: 01,541 GamePouch_iPhone [11337: 207] nombre de la tienda es (null) (BGF) continuar 2010-03-07 19: 21: 02,503 GamePouch_iPhone [11337: 207] nombre de la tienda es (null)

Muchas gracias por leer. Cualquier ayuda sería muy apreciada.

Gracias Bakhtiyar Uddin

¿Fue útil?

Solución

veo cuál es el problema: Para NSManagedObjects, tenemos que utilizar valueForKey

Debería haber usado [TempStore valueForKey: @ "Nombre"] en lugar de [TempStore Nombre]

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top