2015-02-09 119 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;