У меня есть класс FoodType, который читает NSArray словарей из списка свойств. Он хранит отношения целочисленных значений и имен NSString.
Когда я добавляю новую запись, я инициирую запись со значениями по умолчанию, использую класс FoodType для извлечения соответствующих строк и отображения их в «представлении добавления записи».
Каждый раз, когда я открываю представление «Добавить запись» (это подкласс таблицы), все ячейки обновляются дважды. (Я узнал об этом, имея точку останова в cellForRowAtIndexPath).
Тогда возникает проблема. Отладчик показывает мне, что в первый раз тексты ячеек установлены правильно. Но во второй раз тот же фрагмент кода не может получить строку. Сбой означает, что он возвращает ноль. Это код в cellForRowAtIndexPath: (запись является переменной класса)
cell.detailTextLabel.text = [FoodTypes TypeName:record.TypeId];
Класс FoodTypes объявлен как
@interface FoodTypes : NSObject {
}
+(NSString*) TypeName: (NSNumber *) Type;
+(NSArray*) SubTypes: (NSNumber *)Type;
+(NSString*) SubType: (NSNumber *)Type atIndex:(NSNumber*)index;
+(NSString*) Unit: (NSNumber *) Type;
+(NSInteger) TypeCount;
@end
И у него есть static NSArray *foodTypes_;
в файле .m. Я не знаю, почему таблица обновляется дважды, и это должно произойти дважды? (record.TypeId
соответствует)
Самая большая проблема в том, что я не знаю, почему [FoodTypes TypeName]
работает в первый раз, но возвращает nil (спасибо Eiko) во второй раз.
код при добавлении записи:
FoodAddViewController *favCtrl = [[FoodAddViewController alloc] initWithNibName:@"FoodDetailView" bundle:nil];
favCtrl.delegate = self;
NSManagedObjectContext *addingContext = [[NSManagedObjectContext alloc] init];
self.addingManagedObjectContext = addingContext;
[addingManagedObjectContext setPersistentStoreCoordinator:[[fetchedResultsController managedObjectContext] persistentStoreCoordinator]];
favCtrl.record = (FeedRecordClass*)[NSEntityDescription insertNewObjectForEntityForName:@"FeedRecord" inManagedObjectContext:addingContext] ;
[favCtrl.record init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: favCtrl];
[self.navigationController presentModalViewController:navController animated:YES];
[favCtrl release];
[addingContext release];
[navController release];