1

新しいコア データ オブジェクトを作成し、ビューのサブビューの情報を入力しようとしています。(配列を template_control オブジェクトで埋めるためだけに)

どうしたの?オブジェクトは保存できませんが、後で を実際に保存するmanagedobjectcontectと、オブジェクトが保存されます。

私は何を試しましたか?managedobjectcontext保存しない新しいを作成しましたsavemanagedobjectcontextが、通常のを実行すると、コントロールは保存されますmanagedobjectcontext

これに対する解決策を持っている人はいますか?

前もって感謝します。

   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;

これは私のテーブルの画像です

ここに画像の説明を入力

少しわかりやすくするために、通常の managedobjectcontext を保存するコードを次に示します。

-(void)saveNewTemplateControls{

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];
}

}

4

1 に答える 1

2

管理オブジェクト コンテキストを保存するまで、オブジェクトは Core Data をサポートする sqlite db に書き込まれません (または「保存」されません)。保存を呼び出すまで、データベースをチェックアウトする必要はありません。

于 2013-03-29T08:45:31.850 に答える