2013-03-29 2 views
1

새 핵심 데이터 개체를 만들고보기의 하위 뷰에 대한 정보로 채우려고합니다. (template_control 객체로 배열을 채우기 위해)managedobjectcontext를 저장하지 않는 방법

무엇이 문제입니까? 개체를 저장할 수 없지만 나중에 managedobjectcontect의 실제 저장을 수행하면 개체가 저장됩니다.

나는 무엇을 시도 했습니까? 저장하지 않은 managedobjectcontext을 새로 만들었지 만 managedobjectcontextsavemanagedobjectcontext을 입력하면 컨트롤이 저장됩니다.

해결 방법이있는 사람은 누구입니까?

미리 감사드립니다. (무효) saveNewTemplateControls {

-

:

Template_Control * temp_control = [NSEntityDescription 
     insertNewObjectForEntityForName:@"Template_Control" 
                      inManagedObjectContext:self.tmpManagedObjectContext]; 

for(UIView *view in self.view.subviews){ 
    if(![view isEqual:self.templateEditView.leftSideView]){ 
     NSLog(@"DE TAG VAN DE view is %i",view.tag); 

     temp_control.height = [NSNumber numberWithFloat:view.bounds.size.height]; 
     temp_control.width = [NSNumber numberWithFloat:view.bounds.size.width]; 

     [temp_control setX:[NSNumber numberWithFloat:view.frame.origin.x]]; 
     [temp_control setY:[NSNumber numberWithFloat:view.frame.origin.y]]; 
     NSLog(@"%i",view.tag); 
     [temp_control setControl:[self getControlForTemplateControl:view.tag]]; 

     [self.controlsOnTemplate addObject:temp_control]; 
    } 
} 

NSLog(@"aantal controls: op de template %i", [self.controlsOnTemplate count]); 
temp_control = nil; 

enter image description here

가 조금 명확하게하기 위해 내 테이블의 이미지, 여기에 내가 정상적인 managedobjectcontext을 저장 코드의

NSError *error; 

//template voor de contorl ophalen 
NSFetchRequest *request = [[NSFetchRequest alloc]init]; 
[request setEntity:[NSEntityDescription entityForName:@"Template" inManagedObjectContext:self.managedObjectContext]]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@",self.template.name]; 
[request setPredicate:predicate]; 

NSArray *results = [self.managedObjectContext executeFetchRequest:request error:&error]; 


NSEntityDescription *entitydescTemplateControl = [NSEntityDescription entityForName:@"Template_Control" 
                inManagedObjectContext:self.managedObjectContext]; 

for(Template_Control *template_control in self.theNewControls){ 
    NSManagedObject *newtemplatecontrol = [[NSManagedObject alloc]initWithEntity:entitydescTemplateControl 
                insertIntoManagedObjectContext:self.managedObjectContext]; 


    [newtemplatecontrol setValue:template_control.width forKey:@"width"]; 
    [newtemplatecontrol setValue:template_control.height forKey:@"height"]; 

    [newtemplatecontrol setValue:template_control.x forKey:@"x"]; 
    [newtemplatecontrol setValue:template_control.y forKey:@"y"]; 

    [newtemplatecontrol setValue:[results objectAtIndex:0] forKey:@"template"]; 

    [newtemplatecontrol setValue:template_control.control forKey:@"control"]; 

    [self.managedObjectContext save:&error]; 
} 

}

+0

"개체를 저장할 수 없음"이란 무엇을 의미합니까? CD 스택을 초기화하는 방법, 멀티 스레딩을 사용하는 방법, 속성에 대한 유효성 검증 롤이 있습니까? –

+0

나는 그것을 조금 더 명확하게 만들 것이다. 뷰의 모든 하위 뷰를 포함하는 배열을 만들려고합니다. 이후 x, y, 너비, 높이 및 컨트롤 (데이터베이스의 엔터티가 다른 함수로 들어감)을 포함하는 관리되는 개체 (template_control)가있는 배열을 만듭니다. 나중에 내 코드에서 각 컨트롤에 템플릿 (데이터베이스의 intity)을 추가하고 싶지만 템플릿 소유권 채우기를 작성한 managedObjects도 저장된다는 문제가 있습니다. – leke

+0

내 게시물에 추가 한 이미지에서 채워진 템플릿이 채워진 템플릿을 볼 수 있습니다. – leke

답변

2

관리 객체 컨텍스트를 저장할 때까지는 객체가 코어 데이터를 백업하는 sqlite db에 기록 (또는 "저장")되지 않습니다. db를 체크 아웃 할 때까지 파인트를 저장하지 않아도됩니다.

관련 문제