-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

如果您想重新填充数组,请先将它们设为 nil 以避免您现在面临的情况..

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

在调用方法 (setUpData) 时,您将获得两次相同的数据,或者在其中添加新数据。

您需要它来删除所有旧数据并使用新数据集,为此您需要从数组中删除/释放所有数据并向其中添加新对象。

在方法中(如果使用 ARC)

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

首先释放你的数组:

[dataArray release];

或者如果你使用Arcthen

[dataArray removeAllObjects];

然后检查并再次填写

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

如果你想重新填充你的数组,那么首先你必须做空。

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

然后重新填充数组。

于 2013-03-22T10:01:17.207 回答