2013-10-04 1 views
0

두 개의 엔터티가 있습니다. TempProducts 및 Products핵심 데이터 - 엔터티에서 레코드를 가져 와서 다른 엔터티에 추가하는 방법

TempProducts가 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 

}

답변

0

당신은 하나의 엔티티를 사용하여 해결할 수 : Products,하지만 하나 개의 추가 부울 속성 isTemp와. 설명하는 유스 케이스는 단순화되지만 코드의 다른 부분을 복잡하게 만들 수 있습니다 (예 : 모든 가져 오기에서 임시 객체 만 가져 오거나 임시 객체는 가져 오지 않는 것을 기억해야합니다.

+0

고맙습니다. 시도해 보겠습니다. – user2414590

+0

나는 그 컨트롤러에 관련된 + 버튼을 만드는 방법을 알지 못한다. – user2414590

관련 문제