-2

サーバーからデータを取得してテーブルで使用するメソッドがあります問題は、データがフェッチされたときに、すでに配列に3つのアイテムがあり、メソッド呼び出し後に5になり、データをリロードすると、レコードが複製されることです。

[self saveData];
[self setUpData];
[tableView reloadData];


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1 ;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate];

    int count=[resultArray count];

    NSLog(@"resultArry Row Counts is %d",count);

    return [resultArray count];

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return 70.00;
}


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

    static NSString *CustomCellIdentifier = @"CustomCellIdentifier";

    CustomCellF *cell = (CustomCellF *)[tableView
                                        dequeueReusableCellWithIdentifier: CustomCellIdentifier];

    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCellF"
                                                     owner:self options:nil];
        for(id oneObject in nib)
            if ([oneObject isKindOfClass:[CustomCellF class]])
                cell = (CustomCellF *)oneObject;
        cell.selectionStyle=UITableViewCellSelectionStyleNone;
    }

    appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate];
    FeedbackData *theCellData = [resultArray objectAtIndex:indexPath.row];

    cell.theTitle.text =theCellData.user_Feedback;

    NSString*type=theCellData.user_Rating;

    if ([type isEqualToString:@"One Star"]) {

        cell.theCellImage1.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage2.image=[UIImage imageNamed:@"stargray.png"];
        cell.theCellImage3.image=[UIImage imageNamed:@"stargray.png"];
        cell.theCellImage4.image=[UIImage imageNamed:@"stargray.png"];
        cell.theCellImage5.image=[UIImage imageNamed:@"stargray.png"];
    }
    else if ([type isEqualToString:@"Two Stars"]) {

        cell.theCellImage1.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage2.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage3.image=[UIImage imageNamed:@"stargray.png"];
        cell.theCellImage4.image=[UIImage imageNamed:@"stargray.png"];
        cell.theCellImage5.image=[UIImage imageNamed:@"stargray.png"];
    }
    else if ([type isEqualToString:@"Three Stars"]) {

        cell.theCellImage1.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage2.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage3.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage4.image=[UIImage imageNamed:@"stargray.png"];
        cell.theCellImage5.image=[UIImage imageNamed:@"stargray.png"];
    }
    else if ([type isEqualToString:@"Four Stars"]) {

        cell.theCellImage1.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage2.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage3.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage4.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage5.image=[UIImage imageNamed:@"stargray.png"];
    }
    else {

        cell.theCellImage1.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage2.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage3.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage4.image=[UIImage imageNamed:@"starblue.png"];
        cell.theCellImage5.image=[UIImage imageNamed:@"starblue.png"];
    }

    return cell;
}
4

4 に答える 4

0

アレイを補充したい場合は、現在直面していることを避けるために、最初にアレイをゼロにします。

if(dataArray!=nil){
dataArray=nil;
dataArray=[[NSMutableData alloc]init];
}
于 2013-03-22T09:46:57.907 に答える
0

メソッド(setUpData)を呼び出しているときに、同じデータを2回取得するか、新しいデータが追加されます。

すべての古いデータを削除して新しいデータセットを使用するために必要です。このため、配列からすべてのデータを削除/解放し、それに新しいオブジェクトを追加する必要があります。

メソッド内(ARCを使用している場合)

-(void) setUpData{
   if(yourArray!=nil){
         yourArray=nil;
         yourArray=[NSMutableArray new];
         //fill data again here
    }
} 
于 2013-03-22T09:48:12.070 に答える
0

アレイを補充したい場合は、最初に空にする必要があります。

     if(resultArray.count >0)
     {
              [resultArray removeAllObjects];
      }

次に、アレイを補充します。

于 2013-03-22T10:01:17.207 に答える
0

アレイを最初にリリースします。

[dataArray release];

または使用するArc場合

[dataArray removeAllObjects];

次に、確認してもう一度入力します

if(dataArray!=nil){
    dataArray=nil;
    dataArray=[[NSMutableData alloc]init];
}
于 2013-03-22T10:46:09.950 に答える