/ / Core Data helper clase devolviendo objeto nil - ios, object-c, core-data

Clase auxiliar de datos principales que devuelve el objeto nil - ios, object-c, core-data

Estoy tratando de limpiar un poco mi código y tuve la idea de crear una pequeña clase de ayuda para guardar y recuperar datos de datos básicos.

Hago el NSFechtRequest desde dentro de la clase de ayuda como esta:

- (NSArray *)fetchDataOutOfDBWithEntity:(NSString *)description
{
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"HealthData" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

NSError *error;
NSArray *results = [context executeFetchRequest:fetchRequest error:&error];

return results;

}

Esto solo devuelve un NSArray como debe ser si usas executeFetchRequest:error:

Llamo a esta función desde un UICollectionsViewController "s viewDidLoad método como este:

- (void)viewDidLoad {
[super viewDidLoad];
DatabaseHelper *helper = [[DatabaseHelper alloc] init];
NSArray *array = [helper fetchDataOutOfDBWithEntity:@"HealthData"];
dataInHealth = [[[NSArray alloc] initWithArray:array];
}

Lo extraño ahora es que dataInHealth contiene información. Puedo imprimirlos y puedo ver el NSManagedObjects (a través de puntos de interrupción) dentro de la matriz volví perocuando quiero insertar la información en la colección, simplemente no hace nada o lanza algunas excepciones locas (dependiendo de lo que esté haciendo).

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
KalenderCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];

HealthData *object = [dataInHealth objectAtIndex:indexPath.row];


cell.stepCount.text = object.stepCount;


return cell;
}

object.stepCountes solo nula y todas las otras propiedades que tengosigue igual ¿Por qué no puedo acceder a mis propiedades? Cuando no tengo ninguna posibilidad, excepto la recuperación desde viewDidLoad en lugar de la clase auxiliar, todo funciona de forma inmediata.

Hay datos en esa NSArray. ¿Por qué no puedo acceder?

Respuestas

1 para la respuesta № 1

Intenta convertir el objeto DatabaseHelper en unpropiedad, creo que su Contexto de objeto gestionado se publica cuando viewDidLoad finaliza su ejecución, liberando también todos los Objetos gestionados que se obtuvieron a través de él.