在UITableViewController中加载NSMutableArray,搜索栏崩溃 - 带有ARC的iOS5

时间:2012-02-18 17:11:32

标签: iphone objective-c uitableview ios5 nsmutablearray

我正在使用iOS 5中的搜索栏将NSMutableArray加载到UITableViewController。如果我将数组填入下面的代码并点击搜索栏,则效果非常好:

[placesOutputArray addObject:@"object1"];
[placesOutputArray addObject:@"object2"];
[placesOutputArray addObject:@"object3"];
[placesOutputArray addObject:@"object4"];

customSearchArrayUITableView委托方法中加载的数据数组。

但是,如果我按照下一个方式填充数组并单击搜索栏:

for(int i=0;i<15;i++)
   [placesOutputArray addObject:@"TestContent"];     

当我点击搜索栏时,它崩溃了:

  

*由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [__ NSArrayM objectAtIndex:]:索引9超出空数组的边界'    * 第一次抛出调用堆栈:   (0x33d9a8bf 0x33fea1e5 0x33ce3b6b 0xa1d1 0x371a39cb 0x371a2aa9 0x3718977b 0x371896c3 0x37189277 0x37184e7b 0x37184bf9 0x37302b0f 0x33d95813 0x33d8e72f 0

我看到问题出在cellForRowAtIndexPath UITableView委托方法,因为第一个屏幕只显示9个单元格。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

解决!这是与cellForRowAtIndexPath和可变对象相关的问题。解决了检查UITableViewCells并进行变异检查的问题。

答案 1 :(得分:0)

NSArray的实例是不可变的。请改用NSMutableArray。更明显的是,将placesOutputArray从NSMutableArray更改为NSArray,并且不要忘记为其适当分配内存self.placesOutputArray = [NSMutableArray array];

答案 2 :(得分:0)

  

但是,如果我以下一个方式填充数组并单击搜索   条:

我看不到你的代码是如何填充同一个数组的。您提供的代码段看起来像初始化placesOutputArray,而不是customSearchArray。你觉得答案就这么简单吗?