2010-10-08 43 views
1

我想模拟iPhone的SMS Bubbles为我自己的应用程序。我发现了一些不错的代码(FYI):http://vimeo.com/8718829。这是一个重新调整的UITableView。究竟是什么想要的。如何防止计数空的NSMutableArray

问题出在这里: - Tableview中充满了一个消息数组 - 它需要是一个NSMutable数组,因为您希望随时添加消息。 - 当还没有消息时,消息数组是空的。 - 但计数一个空的NSMutableArray会导致怀疑,应用程序崩溃。 (你需要计数滚动)。

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

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

任何建议是值得欢迎的。 Tnx Christian

回答

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); 

它应该工作。

+0

是的,写下来对我有一定的治疗作用。我添加了一个NSInteger作为计数器。每次添加消息时都会加起来。这工作。 – Chrizzz 2010-10-08 21:02:17

+0

但我猜Michele的答案也是对的。这确实与这条线有关。我希望我早点知道这个解决方案。所以谢谢你提供它。 (我以为我读了一个NSArray可以被计数为0,但不是一个NSMutableArray。显然我错了,Sry。) – Chrizzz 2010-10-08 21:05:23

1

只要它的alloc'd确定了它的初始化位置,你就可以计算一个空数组(我假设你的意思是[arrayName count])。