0

我有两个实体:TempProducts 和 Products

TempProducts 填充在 TableView 中。用户必须在 tableview 中输入数据。当他单击按钮时,我需要从 TempProducts 获取所有记录并将它们添加到 Products。之后我删除所有 TempProducts 以便下次表为空。

- (IBAction)saveData:(id)sender

{

//FETCH ALL RECORDS OF TEMPPRODUCTS
NSFetchRequest * allTempProducts = [[NSFetchRequest alloc] init];
[allTempProducts setEntity:[NSEntityDescription entityForName:@"TempProducts" inManagedObjectContext:self.managedObjectContext]];
[allTempProducts setIncludesPropertyValues:NO]; //only fetch the managedObjectID


//FETCH ALL RECORDS OF TEMPPRODUCTS
NSFetchRequest * allProducts = [[NSFetchRequest alloc] init];
[allProducts setEntity:[NSEntityDescription entityForName:@"Products" inManagedObjectContext:self.managedObjectContext]];
[allProducts setIncludesPropertyValues:NO]; //only fetch the managedObjectID

NSError * error = nil;
NSArray * tProducts = [self.managedObjectContext executeFetchRequest:allTempProducts error:&error];

NSArray * products = [self.managedObjectContext executeFetchRequest:allProducts error:&error];


NSLog(@"The array TempProducts has %li records", [tProducts count]);
NSLog(@"The array Products has %li records", [products count]);

//-------------------------------------------------------------------------

//ADD OBJECT TO PRODUCTS

NSManagedObjectContext *con = [self managedObjectContext];
NSManagedObject *countryObject=[NSEntityDescription
                                insertNewObjectForEntityForName:@"Products"
                                inManagedObjectContext:con];



//--------------------------------------------------------------------------
//error handling goes here
for (NSManagedObject * tProduct in tProducts) {
    [self.managedObjectContext deleteObject:tProduct];
}
NSError *saveError = nil;
[self.managedObjectContext save:&saveError];
//more error handling here

}

4

1 回答 1

0

您可以通过仅使用一个 entity: 来解决它Products,但使用一个额外的 boolean attribute isTemp。它会简化您描述的用例,但可能会使代码的其他部分复杂化,例如,在每次获取时,您必须记住仅获取临时对象或非临时对象。

于 2013-10-04T19:13:12.503 回答