0

わかりましたので、この関数にいくつかのコードを書きました:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"tableviwcell is getting called");
    properties = [NSUserDefaults  standardUserDefaults];

    NSDictionary *events_dict = [properties objectForKey:@"events_dict"];
    NSDictionary *events = [events_dict objectForKey:@"event"];

    am_participants = [events objectForKey:@"amParticipants"];
    pm_participants = [events objectForKey:@"pmParticipants"];

    UITableViewCell *cell = nil;
    cell = [tableView dequeueReusableCellWithIdentifier:@"currentCell"];
    if(cell == nil){
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"currentCell"];
    }
    int sizeofam = [am_participants count];
    int sizeofpm = [pm_participants count];
    NSMutableArray *participants  =[[NSMutableArray alloc] init];
    NSLog(@"size of am: %i", sizeofam);
if(sizeofam > 0 && sizeofpm > 0){
    for(int i = 0; i < sizeofam; i++){
        NSDictionary *ampart_dict = [am_participants objectAtIndex:i];
        NSString *ampart_email = [ampart_dict objectForKey:@"email"];
        NSString *ampart_email_extra = [@"am" stringByAppendingString:ampart_email];
        [participants addObject:ampart_dict];
    }

    for(int i = 0; i < sizeofpm; i++){
        NSDictionary *pmpart_dict = [pm_participants objectAtIndex:i];
        NSString *pmpart_email = [pmpart_dict objectForKey:@"email"];
        NSString *pmpart_email_extra = [@"pm" stringByAppendingString:pmpart_email];
        [participants addObject:pmpart_dict];
        NSLog(@"%@", participants);
    } 

    int sizeofparticipants = [participants count];

    for(int i = 0; i < sizeofparticipants; i++){
        NSString *participanti = [[participants objectAtIndex:i] objectForKey:@"email"];
        for(int j = 0; j < sizeofparticipants; j++){
            NSString *participantj = [[participants objectAtIndex:j] objectForKey:@"email"];

            if([participanti isEqualToString:participantj]){
                NSLog(@"Participant j:  %@", participantj);
                [participants removeObjectAtIndex:j];
                sizeofparticipants = [participants count];
            }
        }
    }

基本的に、2 つの配列 am_participants と pm_participants を参加者の 1 つの配列にマージする必要があります。配列内の各オブジェクトは、名前、電子メールなどのさまざまな値でいっぱいの辞書です。次に、重複する値をリストから削除する必要があります (たとえば、午前リストと午後リストに誰かが含まれている場合などです。削除することでそれを行っています)。メールアドレスがどちらのリストでも同じである場合の値。

この後、セルに参加者のリストを入力して、「参加者」と呼ばれる参加者の新しい配列を 1 つのリストに表示する必要があります。

セルの数を 30 に設定しました。

ただし、リストを下にスクロールすると、配列の位置が移動され、重複する値が表示されると思われるため、セルには異なる名前がランダムに入力されます。

誰かが私が間違っていることを説明できますか?

ありがとう!

4

1 に答える 1

0

セル割り当てコードは上記に記載されていませんがparticipants、説明したように、セルのコンテンツとしてから値を割り当てていると想定しています。問題は、内部で配列を作成していることですcellForRowAtIndexPath:。このメソッドは、新しいセルが表示されるたびに呼び出されるため、行ごとに参加者を再作成しています。viewDidLoad上記のコードをまたはに移動する必要がありますviewDidAppear

于 2012-07-25T16:10:33.657 に答える