使用数组填充TableView时出错:索引1超出边界[0 .. 0]

时间:2013-05-15 10:36:05

标签: ios objective-c uitableview nsarray

我正在尝试使用NSarray填充UITableview。

我正在构建一个用户可以搜索公司的应用程序,搜索结果由数据库中的数组返回。这使得我无法预测这个数组有多大。

当我测试应用时,如果只有一个搜索结果,它就会卡住。错误:

    Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
(0x1c9a012 0x10d7e7e 0x1c4fb44 0x5268 0xd68fb 0xd69cf 0xbf1bb 0xcfb4b 0x6c2dd 0x10eb6b0 0x2296fc0 0x228b33c 0x228b150 0x22090bc 0x220a227 0x22acb50 0x31edf 0x1c62afe 0x1c62a3d 0x1c407c2 0x1c3ff44 0x1c3fe1b 0x1bf47e3 0x1bf4668 0x1bffc 0x1ddd 0x1d05)
libc++abi.dylib: terminate called throwing an exception

这就是我的代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return companies.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *celltitle=nil;
    if([companiesArray count]>1){
        celltitle = [[companiesArray objectAtIndex:indexPath.row] objectForKey:@"companyName"];
    }

    else
    {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    cell.textLabel.text = [[companiesArray objectAtIndex:indexPath.row] objectForKey: @"companyName"];
    cell.detailTextLabel.text = [[companiesArray objectAtIndex:indexPath.row] objectForKey: @"companyCity"];

        return cell;
    }

}

如果我的数组只包含1个结果,我应该怎么做才能防止此错误?

1 个答案:

答案 0 :(得分:4)

试试这个

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return companiesArray.count;
}