ios - 为什么我的 NSManagedObject 子类方法没有被识别?

标签 ios xcode core-data nsmanagedobject

我已经(大量)为一个项目子类化了 NSManagedObject。它在原始项目中无缝且毫不费力地工作。

我将这些文件复制到一个新项目中,手动将适当的 CoreData 类添加到新数据模型中。

不幸的是,我遇到了“问题”。由于某种原因,相关子类的方法被忽略了。两个项目之间的代码完全相同,但我突然遇到无法识别的选择器问题。

NSFetchRequest *blockRequest=[[NSFetchRequest alloc] init];
NSEntityDescription *blockDesc=[NSEntityDescription entityForName:@"AdBlock" 
                                           inManagedObjectContext:context];
[blockRequest setEntity:blockDesc];

AdBlock *curBlock=[adBlocks objectAtIndex:blockIndex];

adBlocks=[context executeFetchRequest:blockRequest error:nil];

for (AdBlock *block in adBlocks) {
    [block initAdBlock];//Crashes with unrecognized selector
}

我已经检查过,适当的 .m 文件已添加到编译器构建阶段。代码完全是复制和粘贴,并且在两个项目之间是相同的——源有效,目标无效。

我注意到我没有明确告诉上下文它应该返回子类类型,但这在旧项目中不是问题,那么为什么在新项目中它会成为问题呢?

最佳答案

当这样的事情发生在我身上时,我会尝试两种方法。我做的第一件事是确保我正确地#imported NSManagedObject 子类(我忘记这种方式比我应该更频繁),但正如你所说的你复制和粘贴,我不认为这是你的问题。我尝试的第二件事是通过转到文件>新建>文件然后 NSManagedObject 子类然后选择我更改了某些内容的 NSManagedObjects 来重建 NSManagedObjects。我建议根据您的情况重建所有这些对象。看看是否有效。它可能不是,但它是一个简单的起点。

关于ios - 为什么我的 NSManagedObject 子类方法没有被识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12066101/

相关文章:

ios - 带有 EXC_BAD_ACCESS 的 NSArray obis 命令的最后一个元素出错(代码=EXC_ARM_DA_ALIGN

ios - 过滤具有大量对象的数组的唯一名称

c++ - libstdc++ 在 Mac 上找不到线程文件

iphone - 服务器不接受客户端注册 68

iphone - 在不触发获取 Controller 委托(delegate)的情况下更改 NSManagedObject

ios - 单元测试似乎有效但不插入数据

Swift 中的 iOS 水平可滚动标签栏

iphone - 架构armv7的 undefined symbol ?

iphone - 像 SQL 一样使用 Core Data 计算列

ios - 使用 swift 在文本字段中列出核心数据属性