所以我有一个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];
尝试了它,我仍然得到相同的崩溃和相同的控制台输出。
答案 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不是属性,它是在数组上运行的方法。