2010-08-26 5 views
0

J'ai un petit problème avec un outil de ligne de commande CoreData. J'ai simplement créé un nouveau projet dans XCode (Core Data CLI), créé un modèle de données dans le fichier .xcdatamodel et généré automatiquement un fichier d'en-tête. Finalement, j'ai modifié le code, qui devrait pouvoir charger l'entité.importer un .xcdatamodel dans CoreData CLI

Le programme Compile sans erreur, mais si je lance le programme i obtenir l'erreur suivante

2010-08-26 20:16:52.031 Core Data Test[866:903] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Kunde'' 
*** Call stack at first throw: 
(
0 CoreFoundation      0x00007fff884bbcc4 __exceptionPreprocess + 180 
1 libobjc.A.dylib      0x00007fff85a630f3 objc_exception_throw + 45 
2 CoreData       0x00007fff821467a9 +[NSEntityDescription entityForName:inManagedObjectContext:] + 153 
3 CoreData       0x00007fff821798a1 +[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:] + 33 
4 Core Data Test      0x0000000100001abf managedObjectModel + 95 
5 Core Data Test      0x0000000100001b7f managedObjectContext + 156 
6 Core Data Test      0x00000001000019b7 main + 47 
7 Core Data Test      0x0000000100001980 start + 52 
8 ???         0x0000000000000001 0x0 + 1 
) 
terminate called after throwing an instance of 'NSException' 
Abort trap 

Voici mon code: svn: //homes.dnsalias.com/CoreDataOwnTesting ou simple à copier

svn co svn://homes.dnsalias.com:3690/CoreDataOwnTesting 

Est-ce que quelqu'un a une idée de ce que je fais mal? Merci de votre aide! Dennis

code ajouté par JLN

NSManagedObjectModel *managedObjectModel(); 
NSManagedObjectContext *managedObjectContext(); 
NSManagedObjectContext *context; 


int main (int argc, const char * argv[]) { 

    objc_startCollectorThread(); 

    // Create the managed object context 
    context = managedObjectContext(); 

    NSManagedObjectModel *kunde = managedObjectModel(); 

    // Save the managed object context 
    NSError *error = nil;  
    if (![context save:&error]) { 
     NSLog(@"Error while saving\n%@", 
       ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error"); 
     exit(1); 
    } 
    return 0; 
} 



NSManagedObjectModel *managedObjectModel() { 

    static NSManagedObjectModel *model = nil; 

    if (model != nil) { 
     return model; 
    } 

    model = [NSEntityDescription insertNewObjectForEntityForName:@"Kunde" inManagedObjectContext:context]; 

    /*NSString *path = [[[NSProcessInfo processInfo] arguments] objectAtIndex:0]; 
    path = [path stringByDeletingPathExtension]; 
    NSURL *modelURL = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"mom"]]; 
    model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
    */ 

    return model; 
} 



NSManagedObjectContext *managedObjectContext() { 

    static NSManagedObjectContext *context = nil; 
    if (context != nil) { 
     return context; 
    } 

    context = [[NSManagedObjectContext alloc] init]; 

    NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: managedObjectModel()]; 
    [context setPersistentStoreCoordinator: coordinator]; 

    NSString *STORE_TYPE = NSSQLiteStoreType; 

    NSString *path = [[[NSProcessInfo processInfo] arguments] objectAtIndex:0]; 
    path = [path stringByDeletingPathExtension]; 
    NSURL *url = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"sqlite"]]; 

    NSError *error; 
    NSPersistentStore *newStore = [coordinator addPersistentStoreWithType:STORE_TYPE configuration:nil URL:url options:nil error:&error]; 

    if (newStore == nil) { 
     NSLog(@"Store Configuration Failure\n%@", 
       ([error localizedDescription] != nil) ? 
       [error localizedDescription] : @"Unknown Error"); 
    } 

    return context; 
} 

Répondre

0

On dirait que vous avez des problèmes de base de la façon dont vous configurez le Core Data Stack. À savoir, le premier problème (et je me suis arrêté là) est que vous essayez de créer une instance NSManagedObjectModel à partir d'une description NSEntityDescription. Boom. Avez-vous lu et suivi le Core Data Utility Tutorial? Il est plus facile pour vous de suivre le tutoriel et de rapporter les problèmes que vous y trouvez que de répéter ses instructions ici.

+0

Oui, j'ai quelques problèmes de base avec les données de base, mais j'ai lu (et essayé). Ok, je vois une erreur stupide. Mais aussi je ne peux pas charger un xcdatamodel. Nouvelle question: Comment ajouter un xcdatamodel à un NSManagedObjectModel? Désolé pour ma première question inexacte ... –

+0

Alors ... quel est votre nouveau code et quelles erreurs voyez-vous? Il est impossible de vous aider si nous ne savons pas ce qui ne va pas. –

Questions connexes