如何防止计算空的NSMutableArray

时间:2010-10-08 20:44:13

标签: iphone uitableview nsmutablearray

我想为我自己的应用程序模拟iPhone的SMS Bubbles。我发现了一些很好的代码(FYI):http://vimeo.com/8718829。它是一个重新设计的UITableView。完全是想要的。

问题在于: - Tableview充满了一系列消息 - 它需要是一个NSMutable数组,因为您想要动态添加消息。 - 当还没有消息时,消息数组为空。 - 但计算一个空的NSMutableArray导致一个异常,应用程序崩溃。 (你需要滚动计数)。

那么什么是一个很好的解决方案呢?我现在用“”填充数组。但那非常难看。你在屏幕上看到一个迷你气泡。

你能隐藏细胞吗?在视频的示例中,已经有2条消息,因此不会出现问题。

欢迎任何建议。 TNX 基督教

2 个答案:

答案 0 :(得分:2)

实际上计算一个空数组不会引发任何异常。我认为问题在于:

- (void)add {
    if(![field.text isEqualToString:@""])
    {
        [messages addObject:field.text];
        [tbl reloadData];
        NSUInteger index = [messages count] - 1;
        [tbl scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];

        field.text = @"";
    }
}

由于“-1”索引不能存在。您可以将该行编辑为

        NSUInteger index = MAX(0, [messages count] - 1);

它应该有用。

答案 1 :(得分:1)

你可以计算一个空数组(我假设你的意思是[arrayName count]),只要它的alloc'd所以确保它早先在某处初始化。