填充iOS TableView- EXC BAD_ACCESS代码= 1错误

时间:2012-12-07 06:55:27

标签: objective-c ios tableview exc-bad-access

出于某种原因,我在加载此视图时遇到上述错误。在我之前的视图中,相同的代码用于填充tableView行,所以我不知道在这一行中可能出现什么问题 - 它是完全相同的代码。当我转换到此视图时,应用程序崩溃。它在正确崩溃之前设法在self.tableRows中对NSLog类别进行管理,因此tableRows中的存储似乎不是问题。它在计算行数的行上崩溃(返回self.tableRows.count)。我有一种感觉,错误与无法访问tableRows有关,但我对iOS很新。谢谢你的帮助!这是我即将到期的大学课程,所以任何帮助都会非常感激。

#import "DivisionsViewController.h"
#import "TeamsViewController.h"

@implementation DivisionsViewController

@synthesize tableRows = _tableRows;
@synthesize currentKey = _currentKey;

NSMutableArray* temp;

#pragma mark - Table view data source

- (void)viewDidLoad
{
    [super viewDidLoad];

    _currentKey = @"default";

    //temporary- trying to populate TableView from JSON

    int i = -1;
    self.tableRows = [NSMutableArray array];
    temp = [[NSMutableArray alloc] init];
    for(NSDictionary *dict in self.divisions){
        NSString *category = [dict objectForKey:@"category"];
        if (self.currentKey != category){
            [self.tableRows addObject:category];
            [temp addObject:[[NSMutableArray alloc] init]];
            self.currentKey = category;
            NSLog(@"table value %@", [self.tableRows lastObject]);
            i++;
        }
        [[temp objectAtIndex:i] addObject:dict];
    }
    for (NSString* category in self.tableRows){
        NSLog(@"category: %@", category);
    }
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    return self.tableRows.count;        

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DivisionCell" forIndexPath:indexPath];
    cell.textLabel.text = [self.tableRows objectAtIndex:indexPath.row];
    return cell;
}

3 个答案:

答案 0 :(得分:1)

你有没有试过NSLog你的桌子计数? 尝试在返回numberOfRows之前对其进行NSlog。

self.tableRows.count

您还可以尝试设置异常断点。 在xcode中选择“断点导航器” - 它是选项卡右侧的第二个选项卡。 (选项卡是您可以在最左侧选项卡中查看项目的位置) 当您在该标签中时,可以按下左下角的+ - >添加异常断点。然后它在崩溃之前就会破裂 - 可能有用!

答案 1 :(得分:0)

1 - currentKey是NSString吗?为什么不使用isEqualToString方法?

self.currentKey != category

2 - 我对“tableRows”的属性类型有疑问,它们的属性是“保留还是强”?

我希望你的问题解决了!

答案 2 :(得分:0)

self.tableRows = [NSMutableArray array]; 

这是一个自动释放阵列 使用这个

self.tableRows = [[NSMutableArray array] retain];

self.tableRows = [NSMutableArray new];