我有以下问题: 我这里有一个 NSDictionary:
@interface ENSListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
NSDictionary* ensList;
}
@property (nonatomic, retain) IBOutlet NSDictionary* ensList;
现在我有一个 UITableView,我想在这里设置数字或行数:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
[self LoadENSList];
NSLog(@"%@", ensList); //Crash Bad Exec
return 2000;
}
我在这里加载 ENSList:
- (void) LoadENSList
{
if (ensList == nil)
{
NSDictionary *ensListFirstReturn = [ENSHandler GetENSListForFolderType:folder_type andFolderID:folder_id];
BOOL success = [[ensListFirstReturn objectForKey:@"success"] boolValue];
if (success)
{
ensList = [ensListFirstReturn objectForKey:@"return"];
NSLog(@"%@", ensList);
}
else
{
[MyAlert ShowSimpleAlert:@"Fehler" andText:@"ENS-Ordner-Liste konnte nicht geladen werden"];
}
}
}
现在我的问题:
首先正确加载入伍名单。 第一个“NSLOG()”给了我所有正确的数据。 就在 LoadENSList 方法结束时,ensList 似乎有问题,因为我在第二个 NSLOG() 处遇到了 BAD EXE-Error。
为什么?
最佳答案
在这一行中:
ensList = [ensListFirstReturn objectForKey:@"return"];
您不使用属性访问器。这意味着该数组是自动释放的,并且在下一个事件循环期间不再存在。
你需要把它改成这样:
self.ensList = [ensListFirstReturn objectForKey:@"return"];
关于iphone - 使用 NSDictionary 访问问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042521/