0

大家好,谢谢大家,情况是这样的,当我使用以下方法填充我的数组时,当我使用方法 2 时它不起作用。目标是改变文本的颜色。两种方法都经过 NSLOGED,数据相同。

第一种方式..(工作名称变灰)

-cellForRowAtIndexPath
....
       if ([self.secArray containsObject:indexPath]) {
        cell.textLabel.textColor = [UIColor grayColor];
    } .....

-didSelectRowAtIndexPath:
...
  [secArray addObject:indexPath];

第二种方式(不工作 - 从我的 .plist 填充数组)

-cellForRowAtIndexPath
....
       if ([self.secArray containsObject:indexPath]) {
        cell.textLabel.textColor = [UIColor grayColor];
    } .....


-viewWillAppear
 NSString *filePathOrdersIndex = [self dataFilePathOrders];

    NSMutableArray *chekDist;

    chekDist = [[NSMutableArray alloc] initWithContentsOfFile:filePathOrdersIndex];
    NSLog( @"data checkDist........... %@", chekDist);
    if(!chekDist){
        chekDist = [[NSMutableArray alloc]init];
    }

    for(id dist_data in chekDist){

        secArray = [dist_data objectForKey:@"myIndexPath"];
        //[secArray addObject:[dist_data objectForKey:@"myIndexPath"]];

    }

记录到控制台的两种方法都包含相同的数组数据....但是第二种方法不起作用

任何帮助是极大的赞赏。

4

1 回答 1

0

在第二种方法中,您将数组的一个元素分配给checkDist数组本身,每个元素都dist_data在?checkDistsecArray

从外部角度来看,如果不了解有关这些变量所包含的数据类型的更多信息,这两种方法在功能上并不等效。尽管secArray每次循环执行时您都在设置变量,但我假设这是不正确的,您需要使用您在第二种方法 ( )for中注释掉的行。[secArray addObject:[dist_data objectForKey:@"myIndexPath"]];

如果在使用该行之后仍然无法正常工作,请在执行第二种方法时验证secArray是否已创建(确保它不是)。nil

于 2012-10-18T21:56:16.840 回答