无法获取 managedObjectContext 对象

not able to get managedObjectContext object

我是 CoreData 的新手。我正在使用 sprite kit 来创建游戏。我在 appdelegate.h 和 appdelegate.m 中将核心数据设置到我的项目中。我可以使用以下代码在 appdelegate 中获取数据

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
                                   entityForName:@"Current" inManagedObjectContext:self.managedObjectContext];

 [fetchRequest setEntity:entity];
 NSError *error;
 NSLog(@"%@",[self.managedObjectContext executeFetchRequest:fetchRequest error:&error]);

我想在另一个 class(视图)中获取数据。我无法获得 managedObjectContext 对象,因为我无法调用 self.managedObjectContext。 我应该怎么做才能从另一个 class 获取核心数据?

您必须有一些 class 与 NSManagedObjectContext,例如'DBManger'

@interface DBManager : NSObject

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

@end

在你的 ViewController 中使用:

DBManager *dbManager = [[DBManager alloc] init];
NSManagedObjectContext *context = dbManager.managedObjectContext;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"Current" inManagedObjectContext:context];

[fetchRequest setEntity:entity];
NSError *error;
NSLog(@"%@",[self.managedObjectContext executeFetchRequest:fetchRequest error:&error]);

如果您的 ManagedContext 在 AppDelegate 中,获取它:

NSManagedObjectContext *context = ((AppDelegate*)[UIApplication sharedApplication].delegate).managedObjectContext;