Zapisywanie w kontekście CoreData na wątku w tle

Od jakiegoś czasu zmagam się z tym problemem, a dokumentacja Apple i SO nie pomogły do ​​tej pory. Korzystałem z ManagedObjectContext na UIManagedDocument i poniższy kod działał bez zarzutu. Następnie zdecydowałem się użyć szablonu Apple dla CoreData w AppDelegate, więc model, stały koordynator sklepu i kontekst są tworzone w AppDelegate. Pobieranie z kontekstu AppDelegate nie jest problemem, ale problemem jest zapisywanie w tle. Powinienem mieć lokalny kontekst w wątku, który zapisuję i jak Apple, aby mieć tego samego koordynatora sklepu. Ale poniższy kod nie zapisuje danych. Czy ktoś może tutaj doradzić? Dziękuję Ci.

- (void)fetchAndPersist
{
    dispatch_queue_t ffetchQ = dispatch_queue_create("ForFetch", NULL);
    dispatch_async(ffetchQ, ^{

        NSManagedObjectContext *secureManagedObjectContext;
        NSPersistentStoreCoordinator *coordinator = [appDelegate persistentStoreCoordinator];
        if (coordinator != nil) {
            secureManagedObjectContext = [[NSManagedObjectContext alloc] init];
            [secureManagedObjectContext setPersistentStoreCoordinator:coordinator];
        }

        // find missing date
        DataManager *dataManager = [[DataManager alloc] init];
        NSDate *missingDate = [dataManager findMissingDateFromDate:selectedDate inContext:secureManagedObjectContext];

        if (missingDate) {
            // fetch and parse data
            DataFetcher *dataFetcher = [[dataFetcher alloc] init];
            NSDictionary *fetchResponse = [dataFetcher parseDataForDate:missingDate];

            // persist it in a block and wait for it
            [secureManagedObjectContext performBlock:^{
                DataStore *dataStore = [[DataStore alloc] init];
                BOOL parsingError = [dataStore persistData:fetchResponse inContext:secureManagedObjectContext];

                if (parsingError) {
                    // handle error
                } else {
                    dispatch_async(dispatch_get_main_queue(), ^{
                        // perform on main
                        [self fetchAndPersist];
                    });
                }
            }];
        }
    });
}

questionAnswers(2)

yourAnswerToTheQuestion