/ / Klasa pomocnicza Core Data zwracająca obiekt nil - ios, objective-c, core-data

Klasa pomocnicza Core Data zwracająca obiekt nil - ios, objective-c, core-data

Próbuję trochę wyczyścić kod i wpadłem na pomysł, aby utworzyć małą klasę pomocniczą do zapisywania i pobierania danych z podstawowych danych.

Wykonuję NSFechtRequest z poziomu klasy pomocniczej w następujący sposób:

- (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;

}

To po prostu zwraca NSArray tak jak powinno być, jeśli używasz executeFetchRequest:error:

Wołam tę funkcję z UICollectionsViewController viewDidLoad metoda taka jak ta:

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

Dziwne jest teraz to, że dataInHealth zawiera informacje. Mogę je wydrukować i zobaczyć plik NSManagedObjects (przez punkty przerwania) w tablicy wróciłem, alekiedy chcę wstawić informacje do collectionView, po prostu nic nie robi lub rzuca jakieś szalone wyjątki (w zależności od tego, co robię).

- (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.stepCountjest po prostu zero i wszystkie inne właściwości, które mamZostań taki jaki jesteś. Dlaczego nie mogę uzyskać dostępu do moich właściwości. Kiedy nie przypadkiem nic poza pobieraniem z poziomu viewDidLoad zamiast klasy pomocniczej, wszystko działa od razu po wyjęciu z pudełka.

W tym NSArray są dane. Dlaczego nie mam do niego dostępu?

Odpowiedzi:

1 dla odpowiedzi № 1

Spróbuj przekształcić obiekt DatabaseHelper w plikmyślę, że kontekst obiektu zarządzanego jest zwalniany, gdy viewDidLoad kończy wykonywanie, zwalniając również wszystkie pobrane przez niego obiekty ManagedObject.