使用 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 子类 - 发送到实例的无法识别的选择器