2015-02-09 126 views
1

我是CoreData的新手。我正在使用sprite工具包来创建游戏。我在appdelegate.h和appdelegate.m的项目中设置了核心数据。我可以使用以下代码在appdelegate中获取数据:无法获得managedObjectContext对象

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]); 

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

回答

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 

在您的视图控制器使用:

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;