0

我有一个分段的 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 值来设置 textcolor

    - (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;

}

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

4

2 回答 2

0

您说这些值存储在数组中,但您显示的是字典。只有对象可以在 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…
}

这是一个很好的教程here

于 2013-10-28T19:29:45.630 回答
0

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

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

于 2013-10-28T19:23:57.883 回答