我正在使用iOS 5中的搜索栏将NSMutableArray
加载到UITableViewController
。如果我将数组填入下面的代码并点击搜索栏,则效果非常好:
[placesOutputArray addObject:@"object1"];
[placesOutputArray addObject:@"object2"];
[placesOutputArray addObject:@"object3"];
[placesOutputArray addObject:@"object4"];
customSearchArray
是UITableView
委托方法中加载的数据数组。
但是,如果我按照下一个方式填充数组并单击搜索栏:
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个单元格。有什么建议吗?
答案 0 :(得分:1)
解决!这是与cellForRowAtIndexPath
和可变对象相关的问题。解决了检查UITableViewCells
并进行变异检查的问题。
答案 1 :(得分:0)
NSArray
的实例是不可变的。请改用NSMutableArray
。更明显的是,将placesOutputArray从NSMutableArray
更改为NSArray
,并且不要忘记为其适当分配内存self.placesOutputArray = [NSMutableArray array];
答案 2 :(得分:0)
但是,如果我以下一个方式填充数组并单击搜索 条:
我看不到你的代码是如何填充同一个数组的。您提供的代码段看起来像初始化placesOutputArray,而不是customSearchArray。你觉得答案就这么简单吗?