-1

我正在尝试使用 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 个结果,我应该怎么做才能防止这个错误?

4

1 回答 1

4

试试这个

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return companiesArray.count;
}
于 2013-05-15T10:37:40.227 回答