我的应用程序动态添加表视图行,这些行接收显示为单元格字符串的通过/失败结果(除了描述)。我试图计算在文本中收到失败结果的单元格数量。我的问题是我的NSLog(@"Counted times: %i", times);
总是返回1而不是添加它们。
cell.textLabel.text = [NSString stringWithFormat:@"Appliance %@: %@", ((Circuit *)[self.circuits objectAtIndex:indexPath.row]).circuitReference,((Circuit *)[self.circuits objectAtIndex:indexPath.row]).rcdTestButton];
if(cell.textLabel.text && [cell.textLabel.text rangeOfString:@"Fail"].location != NSNotFound){
cell.textLabel.textColor = [UIColor redColor];
NSString *string = @"str";
int times = [[string componentsSeparatedByString:@"-"] count];
NSLog(@"Counted times: %i", times);
}
更新代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *string = @"str";
int times = [[string componentsSeparatedByString:@"str"] count];
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
if (indexPath.section == 0) {
cell.textLabel.text = @"Summary of appliance testing";
} else {
//Appliance label text
cell.textLabel.text = [NSString stringWithFormat:@"Appliance %@: %@", ((Circuit *)[self.circuits objectAtIndex:indexPath.row]).circuitReference,((Circuit *)[self.circuits objectAtIndex:indexPath.row]).rcdTestButton];
if(cell.textLabel.text && [cell.textLabel.text rangeOfString:@"Fail"].location != NSNotFound){
cell.textLabel.textColor = [UIColor redColor];
NSLog(@"Counted times: %i", times);
}
cell.imageView.image = [UIImage imageNamed:@""];
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
答案 0 :(得分:2)
看起来你正在初始化循环内部的计数器,它会不断重置它。在循环之前声明变量,然后简单地在循环内迭代它。
答案 1 :(得分:1)
你有:
NSString *string = @"str";
int times = [[string componentsSeparatedByString:@"-"] count];
为什么你会期望它能够返回1以外的任何东西?
如果要计算符合某些条件的行数,则需要遍历数据(而不是单元格),并检查数据中的每个值。