使用核心数据获取生成“无法识别的选择器错误”?

时间:2011-10-21 17:58:23

标签: objective-c core-data nsmanagedobjectcontext nsentitydescription

我正在尝试检索使用Core Data保存的对象列表。在创建项目时,Xcode对默认设置没有任何更改。实际数据存储中有项目,实体Transaction在保存时工作正常但运行以下代码时:

    NSManagedObjectContext * context = [[NSApp delegate] managedObjectModel];
    NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription * entity = [NSEntityDescription 
                                    entityForName:@"Transaction" 
                                    inManagedObjectContext:context];
    [fetchRequest setEntity:entity];
    NSError * error = nil;
    NSArray * transactionList = [context executeFetchRequest:fetchRequest error:&error];
    if (&error != nil) {
        [Utility showMessage:error.description asError:YES];
    } else {
        [Utility showMessage:[NSString stringWithFormat: @"Items: %@", transactionList.count] asError:NO];
    }    

尝试创建entity对象时收到以下错误。

  

[NSManagedObjectModel persistentStoreCoordinator]:发送到实例的无法识别的选择器

我缺少什么,或者我该如何检查导致错误的原因?

<子>的脚注
- Utility是一个静态类,只生成一个NSAlert框 - 我一直在使用this教程来尝试理解代码的工作原理

2 个答案:

答案 0 :(得分:2)

在第一行中,您从应用委托中获取managedObjectModel并将其分配给NSManagedObjectContext。您应该取代managedObjectContext

答案 1 :(得分:2)

从您的代码中,不清楚您分配给托管对象上下文的具体内容。它应该是托管对象上下文,而不是托管对象模型。

此外,您应该检查(error!=nil)是否&error。阅读你的C指针语法(;-)。