Skip to content

Instantly share code, notes, and snippets.

@bradya
Created January 28, 2015 05:04
Show Gist options
  • Select an option

  • Save bradya/699e0a6250e0a4e2bc41 to your computer and use it in GitHub Desktop.

Select an option

Save bradya/699e0a6250e0a4e2bc41 to your computer and use it in GitHub Desktop.

Revisions

  1. bradya created this gist Jan 28, 2015.
    40 changes: 40 additions & 0 deletions gistfile1.m
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    + (void)pauseAndEmptyQueues
    {
    NSOperationQueue *mainOperationQueue = [[SLKDataRepository sharedRepository] mainOperationQueue];
    NSOperationQueue *backgroundOperationQueue = [[SLKDataRepository sharedRepository] backgroundOperationQueue];
    NSOperationQueue *readOperationQueue = [[SLKDataRepository sharedRepository] readOperationQueue];

    [mainOperationQueue setSuspended:YES];
    [backgroundOperationQueue setSuspended:YES];
    [readOperationQueue setSuspended:YES];

    [mainOperationQueue cancelAllOperations];
    [backgroundOperationQueue cancelAllOperations];
    [readOperationQueue cancelAllOperations];

    [mainOperationQueue waitUntilAllOperationsAreFinished];
    [backgroundOperationQueue waitUntilAllOperationsAreFinished];
    [readOperationQueue waitUntilAllOperationsAreFinished];
    }

    + (void)restartQueues
    {
    NSOperationQueue *mainOperationQueue = [[SLKDataRepository sharedRepository] mainOperationQueue];
    NSOperationQueue *backgroundOperationQueue = [[SLKDataRepository sharedRepository] backgroundOperationQueue];
    NSOperationQueue *readOperationQueue = [[SLKDataRepository sharedRepository] readOperationQueue];

    [mainOperationQueue setSuspended:NO];
    [backgroundOperationQueue setSuspended:NO];
    [readOperationQueue setSuspended:NO];
    }

    + (BOOL)addPersistentStoreForAccount:(SLKAccount *)account coordinator:(NSPersistentStoreCoordinator *)coordinator
    {
    [self pauseAndEmptyQueues];

    BOOL result = [self configureStoreForAccount:account coordinator:coordinator];

    [self restartQueues];

    return result;
    }