Tôi cố gắng mở rộng NSManagedObject. Sử dụng XCode Tôi đã tạo MyBox.m và MyBox.h (trực tiếp từ tệp xcdatamodel).[NSManagedObject sayHello]: bộ chọn không được nhận dạng được gửi tới ví dụ 0x
Sau đó, tôi sửa đổi những tập tin này:
#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
và
#import "MyBox.h"
@implementation MyBox
@dynamic endDate;
@dynamic globalId;
@dynamic name;
@dynamic startDate;
-(NSString *)sayHello {
return @"hello";
}
@end
Tôi có thể lấy tất cả myBoxes
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"MyBox" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSMutableArray *myBoxes = [context executeFetchRequest:fetchRequest error:&error];
nhưng sau đó tôi gọi
MyBox *myBox = [myBoxes objectAtIndex:indexPath.row];
[myBox sayHello];
nó biên dịch nhưng sau đó tôi nhận được
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject sayHello]: unrecognized selector sent to instance 0x8e73fc0'
Nếu tôi chỉ đọc một giá trị như
NSLog(@"%@", myBox.name);
nó hoạt động
tôi thấy vấn đề tương tự ở đây, nhưng không có giải pháp. Cảm ơn sự giúp đỡ của bạn.
Có thể bạn đã quên đặt lớp của thực thể thành 'MyBox' tại trình chỉnh sửa coredata. – Alladinian
Tôi đã thiết lập Entity-> Name = Entity-> Class = "MyBox" trong trình soạn thảo coredata. Tôi có phải đặt một số thuộc tính khác không? – stefanr
Hmm thật kỳ lạ. Không có điều đó là đủ ... Bạn có nhiều phiên bản không? – Alladinian