簡體   English   中英

在子上下文中保存會自動保存到父上下文中

[英]Saving in child context saves to parent context automatically

我正在嘗試創建一個更新功能,該功能還允許用戶取消該過程。 我正在使用父子托管對象上下文,並將父競賽的並發性設置為NSMainQueueConcurrencyType。 我的計划是不調用父級上下文的保存來取消更新。 當我檢驗理論並注釋掉所述保存行時,我發現ManagedObject仍在更新。 我究竟做錯了什么?

部分更新功能代碼:

NSManagedObjectContext *bgContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[bgContext setParentContext:self.managedObjectContext];
[bgContext setUndoManager:nil];

[bgContext performBlockAndWait:^{

    for (NSDictionary *itemDictionary in items) {
        //update cancelled
        if (status == -1) {
            return;
        }

        //Function to get a single managedObject by querying the main context.
        NSArray *array = [self queryEntity:entityName withResId:[dictionary objectForKey:@"res_id"]];

        //get the object id of queried managedobject; context -> mainContext
        ENTITY *object = (ENTITY *)[context objectWithID:[[array firstObject] objectID]];
        object.data = @"something"; //change data

        count++;

        //save every 100
        if(count%100 == 0) {
            [bgContext performBlockAndWait:^{
                NSError *error;
                if(![bgContext save:&error]) {
                    NSLog(@"insert error child: %@", [error localizedDescription]);
                }
            }];
        }
    }

    //save excess
    if(count%100 != 0) {
        [bgContext performBlockAndWait:^{
            NSError *error;
            if(![bgContext save:&error]) {
                NSLog(@"insert error child: %@", [error localizedDescription]);
            }
        }];
    }

    //comment out to prevent saving to parent
    /*[context performBlockAndWait:^{
        NSError *error;
        if(![context save:&error]) {
            NSLog(@"insert error parent: %@", [error localizedDescription]);
        }
    }];*/
}];

發現我的問題。 感謝這篇文章: https : //stackoverflow.com/a/7825536/2260928
我使用這些行來忽略取消時的更改:

[bgContext reset];
[context reset];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM