-
Notifications
You must be signed in to change notification settings - Fork 11
/
TMCoreDataController.h
44 lines (36 loc) · 1.61 KB
/
TMCoreDataController.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//
// TMCoreDataController.h
// CoreDataExample
//
// Created by Bryan Irace on 6/2/14.
// Copyright (c) 2014 Tumblr. All rights reserved.
//
typedef void (^TMCoreDataControllerBlock)(NSManagedObjectContext *context);
/**
* Encapsulates an entire [Core Data stack](http://floriankugler.com/blog/2013/4/2/the-concurrent-core-data-stack)
* and exposes methods necessary to perform operations on managed object contexts associated with both the main queue
* and a private queue.
*/
@interface TMCoreDataController : NSObject
/**
* Context associated with the main queue. Can be passed directly to read-only methods that require a context but don't
* require the context to be saved afterwards (in which case `performMainContextBlock:` would be a better option).
*/
@property (nonatomic, strong, readonly) NSManagedObjectContext *mainContext;
+ (instancetype)sharedInstance;
- (void)setUp;
/**
* Provides a block with a private queue context and performs the block on the aforementioned queue, synchronously.
* Saves the context (and any ancestor contexts, recursively) afterwards.
*
* @param block Block provided with a private queue context and performed on the aforementioned queue.
*/
- (void)performBackgroundBlockAndWait:(TMCoreDataControllerBlock)block;
/**
* Provides a block with the main queue context and performs the block on the main queue, synchronously.
* Saves the context (and any ancestor contexts, recursively) afterwards.
*
* @param block Block provided with the main queue context and performed on the main queue.
*/
- (void)performMainContextBlock:(TMCoreDataControllerBlock)block;
@end