我有一个食物类型类,从属性列表中读取字典的NSArray的失败。它存储整数值和NSString名称的关系。表视图总是刷新两次,在第二次
当我添加一个新的记录,我将与初始化默认值的记录,使用食物类型类检索相应的字符串,然后在“添加记录视图”显示它们。
每次我弹出“添加记录”视图(这是一个实现代码如下子类),所有的细胞都会被刷新两次。 (我发现这通过在cellForRowAtIndexPath中有一个断点)。
然后谈到这个问题。调试器告诉我,第一次,单元格的文本设置正确。但第二次,同一段代码无法获得字符串。失败意味着它返回nil。这是的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
而且它在.m文件static NSArray *foodTypes_;
。我不知道桌子为什么刷新两次,是否应该发生两次? (该record.TypeId
是一致的,虽然)
最大的问题是我不知道为什么[FoodTypes TypeName]
工作第一次,但返回nil(感谢英子)的第二次。添加记录时
代码:
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];
你需要表现出更多的代码。这里“失败”是什么意思?是record.TypeId一个有效的值? – Eiko 2011-04-25 09:02:07