objective-c - NSManagedObject 基类的选择器无法识别

标签 objective-c core-data inheritance

在实例上调用基类方法时,我遇到“无法识别的选择器”异常,并且无法看出问题所在。

我有一个名为 Form 的对象,如下所示:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "HPSDbBase.h"

@interface Form : HPSDbBase

@end

Form 的基类如下所示:

#import <CoreData/CoreData.h>

@interface HPSDbBase : NSManagedObject

@property (nonatomic, retain) NSString * id;
@property (nonatomic, retain) NSString * json;

-(id)getJSONElement:(NSString*)key;

@end

然后,我尝试在 View Controller 方法中使用 Form 对象,如下所示:

HPSAppDelegate* appDelegate = [[UIApplication sharedApplication] delegate];

NSError* error = nil;
NSFetchRequest * request = [[NSFetchRequest alloc] init];

[request setEntity:[NSEntityDescription entityForName:@"Form" inManagedObjectContext:appDelegate.managedObjectContext]];

NSArray* arrayOfForms = [appDelegate.managedObjectContext executeFetchRequest:request error:&error];

for (int i=0;i<arrayOfForms.count;i++)
{

    Form* dbForm = [arrayOfForms objectAtIndex:i];

    NSLog(@"Form.json=%@",dbForm.json); // this works

    NSString* wwwww = (Form*)[dbForm getJSONElement:@"test"]; // exception here

}

异常(exception)情况是:

-[NSManagedObject getJSONElement:]: unrecognized selector sent to instance 0x8290940

有人能看出我做错了什么吗?

感谢一百万!

编辑 1

这是 HPSDbBase 的实现:

#import "HPSDbBase.h"

@implementation HPSDbBase

@dynamic id;
@dynamic json;


-(id)getJSONElement:(NSString*)key
{
    NSData *jsonData = [[self json] dataUsingEncoding:NSUTF8StringEncoding];

    NSError *e = nil;

    id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options: NSJSONReadingMutableContainers error: &e];
    NSDictionary *jsonDictionary = (NSDictionary *)jsonObject;

    id rc = [jsonDictionary objectForKey:key];

    return rc;
}

@end 

最佳答案

我找到了问题所在。

我已重命名我的核心数据对象。我重命名了我能看到的关于核心数据对象名称的所有内容,但这显然还不够。我删除了核心数据实体,然后用正确的名称重新创建了一个全新的实体,一切都开始工作了。

关于objective-c - NSManagedObject 基类的选择器无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344891/

相关文章:

ios - 删除 NSManagedObject 时出错

python - 覆盖python中的递归方法

iphone - 向上或向下舍入

swift - 如何将具有对另一个类的多个引用的类建模为核心数据实体?

ios - 尽管我添加了适当的约束,但 Scrollview 没有使用自动布局滚动

datetime - 幕后花絮 : Core Data dates stored with 31 year offset?

java - 如何从java中的父对象列表中获取子对象列表

java - 继承不能调用子类方法

ios - 很多关于 NSString 引用计数的问题

iphone - 我应该如何在 iOS 中为超过 200 张图像制作动画?