10

NSManagedObject を拡張しようとしています。XCode を使用して、(xcdatamodel ファイルから直接) MyBox.m と MyBox.h を作成しました。

次に、これらのファイルを変更しました。

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


@interface MyBox : NSManagedObject

@property (nonatomic, retain) NSDate * endDate;
@property (nonatomic, retain) NSNumber * globalId;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSDate * startDate;

-(NSString *)sayHello;

@end

#import "MyBox.h"
@implementation MyBox

@dynamic endDate;
@dynamic globalId;
@dynamic name;
@dynamic startDate;

-(NSString *)sayHello {
    return @"hello";
}  

@end

すべての myBoxes を取得できます

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription
                                   entityForName:@"MyBox" inManagedObjectContext:context];
    [fetchRequest setEntity:entity];

NSMutableArray *myBoxes = [context executeFetchRequest:fetchRequest error:&error];

しかし、後で私は電話します

MyBox *myBox = [myBoxes objectAtIndex:indexPath.row];    
    [myBox sayHello];

それはコンパイルされますが、その後私は得ます

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject sayHello]: unrecognized selector sent to instance 0x8e73fc0'

次のような値のみを読み取った場合

NSLog(@"%@", myBox.name);

できます

ここで同様の問題を見つけましたが、解決策はありません。ご協力いただきありがとうございます。

4

5 に答える 5

21

私はちょうど同じ問題を抱えています。クラス名を NSManagedObject サブクラスの名前に変更することで解決しましたmyApp.xcdatamodeld -> configurations -> default -> entities -> myEntity

于 2014-01-30T11:56:34.893 に答える