使用 Core Data 获取生成“无法识别的选择器错误”?

Posted

技术标签:

【中文标题】使用 Core Data 获取生成“无法识别的选择器错误”?【英文标题】:Using Core Data to fetch generates 'unrecognized selector error'? 【发布时间】:2011-10-21 17:58:22 【问题描述】:

我正在尝试检索使用 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 教程来尝试了解代码的工作原理

【问题讨论】:

【参考方案1】:

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

【讨论】:

现在我感到有些尴尬,但非常感谢。我虽然这是一个新手的错误!【参考方案2】:

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

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

【讨论】:

以上是关于使用 Core Data 获取生成“无法识别的选择器错误”?的主要内容,如果未能解决你的问题,请参考以下文章

错误:无法识别的选择器发送到实例

目标c [__NSArrayM objectForKey:]:发送到实例的无法识别的选择器

NSManagedObject 子类 - 发送到实例的无法识别的选择器

获取常量值:无法识别的选择器发送到实例错误

尝试获取 AppDelegate 时出现“无法识别的选择器发送到实例”错误

在表格视图中解析数据时获取 objectForKeyedSubscript 无法识别的选择器