0

こんにちは、すべてに感謝します。これが状況です。次のメソッドを使用して配列にデータを入力すると、メソッド 2 を使用しても機能しません。目的は、テキストの色を変更することです。どちらのメソッドも NSLOGED であり、データは同一です。

最初の方法..(作業名はグレー表示されます)

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

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

2 番目の方法 (機能しない - .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"]];

    }

両方の方法がコンソールに記録され、両方の配列に同一の配列データが含まれています....しかし、2番目の方法は機能しません

どんな助けでも大歓迎です。

4

1 に答える 1

0

2 番目の方法では、配列の要素をcheckDist配列自体に割り当てdist_datacheckDistsecArrayます。

外部の観点から見ると、これらの 2 つのメソッドは、これらの変数が保持するデータの種類に関する詳細を知らなければ、機能的に同等ではありません。secArrayただし、ループが実行されるたびに変数を設定しているため、forこれは正しくないと想定しており、2 番目のメソッドでコメントアウトした行を使用する必要があります ( [secArray addObject:[dist_data objectForKey:@"myIndexPath"]];)。

代わりにその行を使用してもまだ機能しない場合は、2 番目のメソッドの実行時にsecArrayが作成されていることを確認してください ( ではないことを確認してください)。nil

于 2012-10-18T21:56:16.840 に答える