не удалось найти NSManagedObjectModel для имени объекта "X" - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть эта ошибка сбоя: * Завершение приложения из-за необработанного исключения 'NSInternalInconsistencyException', причина: '+ entityForName: не удалось найти NSManagedObjectModel для имени объекта' JourneeDeTravail ''

Мой AppDelegate.h:

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate> {
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;     
NSPersistentStoreCoordinator *persistentStoreCoordinator;
UIWindow *window;
UINavigationController *navigationController;
}

@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, retain) UINavigationController *navigationController;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator          *persistentStoreCoordinator;

- (NSURL *)applicationDocumentsDirectory;
- (void)saveContext;
@end

My AppDelegate.m:

#import "AppDelegate.h"
#import "TableViewController.h"
#import "ViewController.h"

@implementation AppDelegate

@synthesize window;
@synthesize navigationController;
@synthesize managedObjectContext =_managedObjectContext;
@synthesize managedObjectModel =_managedObjectModel;
@synthesize persistentStoreCoordinator=_persistentStoreCoordinator;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
ViewController *viewController = [[ViewController alloc] init];
viewController.managedObjectContext = [self managedObjectContext];
NSLog(@"AppDelegate VC: %@",  managedObjectContext);
return YES;
}

- (void)dealloc {
[super dealloc];
}

@end

И ViewController.h:

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "AppDelegate.h"

@interface ViewController : UIViewController{
NSManagedObjectContext *managedObjectContext;
}
@property (retain, nonatomic) IBOutlet UILabel *displayStart;
@property (retain, nonatomic) IBOutlet UILabel *displayEnd;
@property (retain, nonatomic) IBOutlet UITextField *displayResult;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;

- (IBAction)SaveTest:(id)sender;

@end

И ViewController.m:

#import "ViewController.h"

@implementation ViewController
@synthesize managedObjectContext;

- (void)viewDidLoad {    
if (managedObjectContext == nil) { 
    managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate]managedObjectContext];
    NSLog(@"After managedObjectContext VC: %@",  managedObjectContext);
}
}

- (IBAction)SaveTest:(id)sender {
NSLog(@"Dans SaveTest : %@",  managedObjectContext);
NSLog(@"Context: %@",managedObjectContext);
NSLog(@"PS Coord : %@",managedObjectContext.persistentStoreCoordinator);
NSLog(@"MOM : %@", managedObjectContext.persistentStoreCoordinator.managedObjectModel);
NSLog(@"Entities : %@",  [[managedObjectContext.persistentStoreCoordinator.managedObjectModel entities] valueForKey:@"JourneeDeTravail"]);
JourneeDeTravail *journee = (JourneeDeTravail *)[NSEntityDescription insertNewObjectForEntityForName:@"JourneeDeTravail" inManagedObjectContext:managedObjectContext];
}

Но когда я нажимаю кнопку SaveTest, она вылетает с ошибкой, сообщающей, что все мои строки журнала (нулевые).

Конечно, у меня есть сущность под названием JourneeDeTravail ...

Есть идеи? Похоже, у меня нет управляемогоObjectContext, но я не знаю, что делать, чтобы это исправить. Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 25 октября 2012

Отладчик говорит все. Он не может найти сущность. В вашем случае сущность является хранилищем. Нет основных данных, нет памяти.

В AppDelegate.m во время applicationDidFinishLaunching попробуйте создать экземпляр класса хранения. Это дает право на поиск ManageObjectModel.

нравится: myMainThreadStorage = [[StorageClass alloc] init];

Или я совершенно неправильно понял последние 6 часов изучения своей проблемы и решил ее позже [super viewDidLoad]

1 голос
/ 16 февраля 2012

Только для тех из вас, у кого такая же проблема: я нашел решение, когда делал этот урок: http://www.techotopia.com/index.php/An_iOS_5_iPhone_Core_Data_Tutorial

...