访问 BOOL 值并从数组中设置表格单元格

Posted

技术标签:

【中文标题】访问 BOOL 值并从数组中设置表格单元格【英文标题】:access BOOL value and set table cell from an array 【发布时间】:2013-10-28 19:14:11 【问题描述】:

我有一个分段的 UITableView,其中填充了我的数据库中的数据。数据是 JSON 格式,然后根据一个人的工作班次分成三个 MutableArrays。

NSData *data = [NSData dataWithContentsOfURL:url];

json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
ridersInVan = [[NSMutableArray alloc] init];
first = [[NSMutableArray alloc] init];
second = [[NSMutableArray alloc] init];
third = [[NSMutableArray alloc] init];

for (int i=0; i< [json count]; i++)

    item = json[i];

    if ([@"1"  isEqual: item[@"watch"]] )
    
        [first addObject:item];
     else if ([@"2"  isEqual: item[@"watch"]] )
    
        [second addObject:item];
     else if ([@"3"  isEqual: item[@"watch"]] )
    
        [third addObject:item];
    

    ridersInVan = [NSMutableArray arrayWithObjects:first, second, third, nil];

我已经创建了表格视图并填充了所有内容,但我要做的是根据数组内的一些值设置文本颜色


        driver = 0;
        expiration = "2013-10-08";
        greenCard = 1;
        id = 5;
        name = "greg smith";
        paid = 1;
        phoneNumber = "123 345-1234";
        showNumber = 1;
        watch = 3;
    

驱动程序、付费、shownumber 都是 BOOL 的,我如何使用我设置的 bool 值设置文本颜色

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:       (NSIndexPath *)indexPath

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    cell.textLabel.text = [[[ridersInVan objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"name"];
    cell.detailTextLabel.text = [[[ridersInVan objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"phoneNumber"];

if (paid == NO && currentDate <= 8)

    cell.textLabel.textColor = START;

 else if (paid == YES) 
    cell.textLabel.textColor = PAID;

    isPaid = YES;

 else if (paid == NO && currentDate > 8 && currentDate <= 15)

    cell.textLabel.textColor = LATE;

    isLate = YES;

 else if (paid == NO && currentDate > 15 && currentDate <= 28)

    cell.textLabel.textColor = AFTER_VAN_DATE;

    afterDate = YES;
 else if (paid == NO && currentDate > 28)

    cell.textLabel.textColor = OFF_OF_VAN;
    offOfVan = YES;


return cell;

我试图将支付的值设置为数组中的支付值。有什么想法吗?

【问题讨论】:

您添加了很多代码,但我仍然不了解您的数据模型或您的问题究竟是什么。我建议您将问题精简到重点 - 我有这个数据,我怎么能得到这个 - 这就是我所拥有的,但它却变成了 XX。 【参考方案1】:

如果您需要将原生数据类型存储在 int、double、bool 等数组中,您应该使用:[array addObject:[NSNumber numberWithBool:bool]];

然后,恢复类似对象并使用如下值:[[arr objectAtIndex:i] boolValue]

【讨论】:

【参考方案2】:

您说这些值存储在一个数组中,但您显示的是一个字典。只有对象可以在 NSArray 或 NSDictionary 中。布尔值通常存储为 NSNumber(因为 NSJSONSerialization 将所有对象存储为 NSString、NSNumber、NSArray、NSDictionary 或 NSNull)。

你需要这样做:

NSNumber *paidNumber = [myDictionary objectForKey:@"paid"];
BOOL paid = [paidNumber boolValue];

深入研究数组和字典会很快变老。您可能应该创建新的类来管理这些数据,这将允许您执行以下操作:

Car *car = [Cars carAtIndexPath:indexPath];
if (car.paid) 
    // paid…
 else 
    // not paid…

nice tutorial here 对此进行了介绍。

【讨论】:

这是我最初的做法。我上了一节课,一切都很好。我唯一的问题是当我尝试对表格进行分区时,我无法通过 watch 关键字填充这些部分? 您可以根据需要对表格进行分区。这是另一个问题的主题。您可能想看看 TLIndexPathTools,它可以帮助您显着简化表数据建模:github.com/wtmoose/TLIndexPathTools

以上是关于访问 BOOL 值并从数组中设置表格单元格的主要内容,如果未能解决你的问题,请参考以下文章

Python-docx,如何在表格中设置单元格宽度?

在自定义表格视图单元格中设置 UIButton 的高度

在表格单元格中设置 SVG 图标的大小

如何在 xcode 6 中设置表格单元格颜色?

如何在表格分类器中设置固定表格宽度(不是单元格)?

如何使用 C# 和 LibreOffice/OpenOffice 在电子表格单元格中设置粗体文本?