Я пытаюсь прочитать массив из Core Data. Мой код выглядит следующим образом
-(NSArray *)getAges
{
NSArray *fetchedObjects = [[NSArray alloc] init];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSManagedObjectContext *context = nil;
context = [[NSManagedObjectContext alloc] init];
@try {
NSPersistentStoreCoordinator *tempCordinator = (NSPersistentStoreCoordinator *)[(AppDelegate *)[[UIApplication sharedApplication] delegate] persistentStoreCoordinator];
[context setPersistentStoreCoordinator:tempCordinator];
NSError *error;
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Age"
inManagedObjectContext:context];
[fetchRequest setEntity:entity];
fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
}
@catch (NSException *exception) {
NSLog(@"core data exception occured.");
fetchedObjects = nil;
}
[fetchRequest release];
[context release];
return fetchedObjects;
}
Теперь в основном потоке, в методе IBAction, я пишу следующую строку.
[NSThread detachNewThreadSelector:@selector(loadAgesMethod) toTarget:self withObject:nil];
Проблема в том, что этот метод возвращает мне массив из 20 элементов. Я могу видеть количество массивов 20, но в отладчике для каждого элемента массива я вижу «вне области видимости» и «сводка недоступна» И когда я пытаюсь получить любой объект из этого массива, я ничего не получаю. Следует упомянуть одну вещь: я вызываю этот метод getAges в loadAgesMethod из вторичного потока, как я упоминал выше. Это мое требование. Также, когда я пытаюсь получить этот массив из основного потока, я получаю все данные совершенно нормально.
Может кто-нибудь дать мне подсказку, где я не прав?
С наилучшими пожеланиями