2012-06-18 63 views
0

我嘗試解釋我的問題。+ entityForName:在第二個視圖中找不到實體名稱「Ditloide」的NSManagedObjectModel

我有第一視圖中至少有一些按鈕。按下按鈕應用程序打開一個桌面視圖。我在我的項目這些文件:

  • AppDelegate.h /平方米
  • viewcontroller.h/m至控制第一視圖
  • Entity1TableViewController.h/m到控制tableview中由塔
    按鈕打開在第一視圖
  • 的.xcdatamodel

所以,直到我在的tableview是所有是正確的。我的推杆這個

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; 
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"Ditloide" inManagedObjectContext:context]; 

,當我在按鈕選項卡,收到了錯誤:

+entityForName: could not locate an NSManagedObjectModel for entity name 'Ditloide' in a second view 

我至極讀其他職位,我發現這樣的事情:

MainViewController *controller = (MainViewController *)self.window.rootViewController; 
controller.managedObjectContext = self.managedObjectContext; 

放在根控制器中。但在我的情況下,我可以放在哪裏?我必須創建一個新的控制器?如果是,我不能插入

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

方法。

那麼,我該如何解決這個問題呢?

+0

你可以添加你創建'managedObjectContext'的代碼嗎? – deanWombourne

回答

0

我不太確定我理解你的問題。

錯誤是由於您沒有正確設置MOC的事實。有關更多詳情,請參閱insertNewObjectForEntityForName:

問題是:您是否正確設置了核心數據堆棧?你能分享一些代碼嗎?

然後,關於你所看到的代碼,它的目標是在需要的地方注入上下文。例如,假設您有一個名爲YourController的控制器需要上下文。您可以在YourController創建一個屬性類似如下:

//.h 
@property (nonatomic, retain) NSManagedObjectContext* context; // or strong if you ARC 

//.m 
@synthesize context; 

然後,從不同的元素,例如應用程序的委託(如果你已經建立了核心數據堆棧存在),你可以只創建YourController並注入它。

YourController* yourCtr = // alloc-init 
yourCtr.context = [self managedObjectContext]; 

最後,你有什麼用意思是,如果是,我不能插入- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法

相關問題