NSArray计数不起作用

时间:2011-11-22 00:40:28

标签: iphone ios xcode uitableview tableview

所以我有一个UITableView,并使用.plist中的数据填充tableview。这对我来说一直很好,直到今天,当我尝试做同样的事情时,我无法使用numberOfRowsInSection方法。这是我的代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     if...

     else if (segmentOptions == exchange){
         NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:section]]];
         return [array count];
     }   

   //Else
    return contentArray.count;
}

因此在该代码中,每次运行代码时,代码都会崩溃。但是,我使用基本相同的代码来设置tableview文本,并且工作正常:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *CellIdentifier = @"Cell";

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
     }

     if...

     else if (segmentOptions == exchange) {
           NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:indexPath.section]]];
           cell.textLabel.text =  [array objectAtIndex:indexPath.row];
     }

     return cell;
}

并且该代码工作正常,这就是为什么我很困惑。当我设置返回到特定数字的行数,并运行其余代码时,一切正常。所以我真的迷路了。提前发酵

更新 我使用正确的count表示法return [array count];尝试了它,我仍然得到相同的崩溃和相同的控制台输出。

3 个答案:

答案 0 :(得分:5)

首先,count不是属性,所以你不应该使用点语法来访问它。

我建议您更改代码,以便不像属性那样访问count方法。

其次,

测试你的数组是否为nil,它甚至是一个数组。

第三,

发布实际的完整堆栈跟踪。

答案 1 :(得分:2)

如果控制台消息没有帮助,请将其分解并进行调试。它有时会有所帮助,特别是在它迟到时。即。

// NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:section]]];

NSLog(@"%d", section);

id objAtIndex = [listOfExchanges objectAtIndex:section];
NSLog(@"%@", listOfExchanges);
NSLog(@"%@", objAtIndex);

id objForKey = [exchangeDictionary objectForKey:objAtIndex];
NSLog(@"%@", exchangeDictionary);
NSLog(@"%@", objForKey);

答案 2 :(得分:-3)

试试这个:

[array count]

count不是属性,它是在数组上运行的方法。