在 CoreData CLI 中导入 .xcdatamodel

发布于 2024-09-16 11:03:17 字数 3874 浏览 3 评论 0原文

我在使用 CoreData 命令行工具时遇到了一些问题。我只是在 XCode(核心数据 CLI)中创建了一个新项目,在 .xcdatamodel 文件中创建了一个数据模型并自动生成了一个头文件。最后我修改了代码,应该能够加载实体。

该程序编译没有错误,但如果我运行该程序,我会收到以下错误

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

这是我的代码: svn://homes.dnsalias.com/CoreDataOwnTesting 或易于复制

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

有人知道我做错了什么吗?感谢您的帮助! Dennis

由 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;
}

i've a little Problem with a CoreData Command Line Tool. I simply created a new Project in XCode (Core Data CLI), created a Data Model in the .xcdatamodel File and auto generated a Header file. Finaly i modified the Code, wich should able to load the Entity.

The Program Compiles without errors, but if i run the Program i get the following error

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

Here's my code: svn://homes.dnsalias.com/CoreDataOwnTesting or simple to copy

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

Does anyone have an Idea what i am doing wrong? Thank's for your help!
Dennis

Code added by 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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黯淡〆 2024-09-23 11:03:17

看来您在设置核心数据堆栈的方式上遇到了一些基本问题。也就是说,第一个问题(我停在那里)是您尝试从 NSEntityDescription 创建 NSManagedObjectModel 实例。繁荣。

您是否已阅读并遵循核心数据实用程序教程?对您来说,按照教程并报告您在其中发现的问题比在此处重复其说明更容易。

It looks like you've got some basic problems in the way you're setting up the Core Data Stack. Namely, the first problem (and I stopped there) is that you're trying to create an NSManagedObjectModel instance from an NSEntityDescription. Boom.

Have you read and followed the Core Data Utility Tutorial? It's easier for you to follow the tutorial and report on the problems you find there than to parrot its instructions here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文