无法获取 managedObjectContext 对象
Posted
技术标签:
【中文标题】无法获取 managedObjectContext 对象【英文标题】:not able to get managedObjectContext object 【发布时间】:2015-02-09 09:09:12 【问题描述】:我是 CoreData 的新手。我正在使用精灵套件来创建游戏。我在 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]);
我想在另一个类(视图)中获取数据。我,因为我无法调用 self.managedObjectContext。 为了从另一个类中获取核心数据,我应该怎么做?
【问题讨论】:
【参考方案1】:你必须有一些带有 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;
【讨论】:
以上是关于无法获取 managedObjectContext 对象的主要内容,如果未能解决你的问题,请参考以下文章
使用 FetchResultController 和 ManagedObjectContext 获取对象的区别
RestKit:'NSInternalInconsistencyException',原因:'无法执行映射:没有分配`managedObjectContext`
为啥从 UIApplicationDelegate 获取 ManagedObjectContext 的 Apple 文档不好?