Ios 每次加载Tableview单元格时,都会重新加载多个表格单元格

Ios 每次加载Tableview单元格时,都会重新加载多个表格单元格,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我正在发出一个获取请求,如下所示 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"PendingShipmentDetails"]; NSEntityDescription *entity = [NSEntityDescription entityForNa

我正在发出一个获取请求,如下所示

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"PendingShipmentDetails"];
 NSEntityDescription *entity = [NSEntityDescription entityForName:@"PendingShipmentDetails" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];
然后,我在
viewDidLoad
方法中将获取的记录添加到数组中,如下所示

NSArray *result = [self.managedObjectContext executeFetchRequest:request error:&error];
    if (result.count > 0) {
        int i;
        amountArray = [[NSMutableArray alloc] init];
        statusArray = [[NSMutableArray alloc]init];
        shipmentReferenceNumberArray = [[NSMutableArray alloc]init];
        invoiceNumberArray = [[NSMutableArray alloc]init];
        for (i = 0; i < [result count]; i++) {
            pending = (NSManagedObject *)[result objectAtIndex:i];
            [shipmentReferenceNumberArray addObject:[pending valueForKey:@"shipmentno"]];
            [invoiceNumberArray addObject:[pending valueForKey:@"invoice_no"]];
            [amountArray addObject:[pending valueForKey:@"amount"]];
            [statusArray addObject: [pending valueForKey:@"status"]];
        }

    } else {
        NSLog(@"SORRY");
    }
NSArray*result=[self.managedObjectContext executeFetchRequest:request error:&error];
如果(result.count>0){
int i;
amountArray=[[NSMutableArray alloc]init];
statusArray=[[NSMutableArray alloc]init];
shipmentReferenceNumberArray=[[NSMutableArray alloc]init];
invoiceNumberArray=[[NSMutableArray alloc]init];
对于(i=0;i<[结果计数];i++){
未决=(NSManagedObject*)[result objectAtIndex:i];
[shipmentReferenceNumberArray addObject:[pending valueForKey:@“shipmentno”];
[invoiceNumberArray addObject:[待定值forkey:@“发票号”];
[amountArray addObject:[pending valueForKey:@“amount”];
[statusArray addObject:[pending valueForKey:@“status”];
}
}否则{
NSLog(“对不起”);
}

问题是,由于在for循环中添加了对象,每次当我向表单元格导航时,都会多次使用相同的值填充该表单元格。但是,如果我将元素添加到数组中,在for循环之外,只添加一个元素,因此任何时候都只能看到一个表单元格。如何对该问题进行排序?

一旦将所有元素添加到数组中,然后重新加载tableView,这样它将返回行计数作为数组的计数,并将为每个元素填充一次数据。

您走的方向非常错误 您可以使用enumerateObjectsUsingBlock而不是for循环

[ChildList enumerateObjectsUsingBlock:^(NSDictionary *obj, NSUInteger idx, BOOL * _Nonnull stop) {

        Child = (ChildListModel*)[[ObjectBuilder builder] objectFromJSON:obj className:NSStringFromClass([ChildListModel class])];

        if (Child) {
            [originalList addObject:Child];
        }
    }];
试试这个。。。我在模态类中使用了这个方法获取CoreData。这对我来说非常有效


将提取的数据添加到数组。

什么是childlist和child?这里childlist是[pending valueForKey:@“amount”],child是我的模型的对象。请您进行电子标定好吗?什么是childlistmodel然后是我的模型类。。。我以我的模型格式获取数据,而不是使用arr或DICRELLOADING使所有表格单元格不可见。在重新加载表格时,只需使用断点检查返回的行数。在tableView委托方法“numberOfRowsInSection”上应用断点,并检查通过arrayCount返回的行数。
+ (NSArray *)fetchCoreData 
{

    AppDelegate * app = [[UIApplication sharedApplication]delegate];
    NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription * entity = [NSEntityDescription entityForName:@"PendingShipmentDetails" inManagedObjectContext:app.managedObjectContext];

    [fetchRequest setEntity:entity];

    NSError * error;
    NSArray * fetchedObjects = [app.managedObjectContext executeFetchRequest:fetchRequest error:&error];

    NSLog(@"Saved Data %@", fetchedObjects);

    if (fetchedObjects != nil) {
        return fetchedObjects;
    }else{
        return nil;
    }
}