更改uitableview数据时出现NSRangeException

时间:2011-02-21 16:48:33

标签: iphone uitableview ios4 nsmutablearray nsrange

我在这里和IOS编程都很新,所以请暂时忍受我的新问题:]

以下是我的申请前的情况:

我有一个视图,其中我添加了3个不同的子视图。 (1类,2字和3条规则) 在类别子视图中,我有一个类别表。 (从类别plist和数组中读取和写入)

根据所选类别,我正在更改单词子视图中的单词表的表格成分。此表保留用户为所选类别输入的单词。 (从nsmutabledictionary读取和写入,其键是来自类别表的类别名称,其值是由我预先输入到plist的字符串数组)

现在举例说明: 我的类别数组有:大小,颜色 我对大小类别的单词数组有3个字符串,如:“tiny”,“big”,“huge” 我的单词数组类别有两个字符串,如:“red”,“blue”

首先,当我选择“大小”类别时,我去取得该类别中的单词,当我从类别子视图移动到单词子视图时,我会在我的uitableview中正确看到“大小”类别中的所有内容。 (它打印“微小”,“大”和“巨大”)

但是当我回到我的类别子视图并选择“颜色”这一次并回到单词子视图时我会崩溃。

好像它调用tableView:cellForRowAtIndexPath:方法,我得到一个NSRangeException,如下所示:

[NSMutableArray objectAtIndex:]: index 2 beyond bounds

长话短说,我想知道为什么cellForRowAtIndexPath方法正在调用不存在的索引。以下是我的cellForRowAtIndexPath方法的内容:

[self reinitializeWordsDictionary];
[self reinitializeWordsInSelectedCategoryArray];

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] 
        initWithStyle:UITableViewCellStyleDefault 
        reuseIdentifier:CellIdentifier] autorelease];
}

cell.textLabel.text = [wordsInSelectedCategoryArray objectAtIndex:indexPath.row];

return cell;

提前感谢您的答案,

TIW

3 个答案:

答案 0 :(得分:3)

如果读取此内容的任何人都没有被cellForRowAtIndexPath抛出NSRangeExceptions,请检查以确保您的UITableView没有被错误地设置为“静态单元格”内容。

答案 1 :(得分:0)

听起来- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 数据源的UITableView方法提供了错误的值。我会通过在此方法上设置断点并检查返回值来检查。

答案 2 :(得分:0)

你在回答什么?

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;