我正在制作如下的获取请求,
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");
}
问题在于,由于在for循环中添加对象,因此每次导航时,表单元格都会多次填充相同的值。但是,如果我在for循环外添加元素到数组,则只添加一个元素,因此任何时候只能看到一个表格单元格。如何排除此问题?
答案 0 :(得分:1)
一旦所有元素都添加到数组中,然后重新加载tableView,那么它将返回行计数作为数组的计数,并为每个元素填充一次数据。
答案 1 :(得分:1)
+ (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;
}
}
试试这个......我的模态类中有这个方法fetchCoreData。这对我来说非常适合。
将获取的数据添加到数组中。
答案 2 :(得分:0)
你的方向非常错误 您可以使用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];
}
}];