Если вы используете Core Data в нескольких местах в приложении, вы можете использовать класс Singleton, который обрабатывает основную логику основных данных и держит persistentStoreCoordinator
, managedObjectModel
и, конечно, хотел managedObjectContext
.
@interface DataManager : NSObject
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
+ (DataManager *)sharedManager;
- (void)saveContext;
@end
Затем вы можете использовать контекст в любом месте, как этот
#import "DataManager.h"
...
NSManagedObjectContext *managedObjectContext = [[DataManager sharedManager] managedObjectContext];
// Do some Core Data action
я бы не рекомендовал, чтобы добавить свойство на AppDelegate поскольку AppDelegate там для обработки событий приложений, а не хранения данных. Это просто чище. Кстати .. Я всегда стараюсь следовать "единый принцип ответственности" (https://en.wikipedia.org/wiki/Single_responsibility_principle)