Как я могу сгенерировать файлы класса доступа к основным данным (файлы.m /.h) из NSManagedObjectModel во время выполнения?

#iphone #objective-c #core-data

#iPhone #objective-c #core-data

Вопрос:

У меня есть NSManagedObjectModel, который я могу сгенерировать во время выполнения, но не могу использовать его во время выполнения, потому что мне нужны файлы классов для объектов.

Как я могу сгенерировать эти классы и, возможно, вставить их в NSBundle, чтобы загрузить их во время выполнения?

Спасибо!

Ответ №1:

Лучшее решение — добавить протоколы.
Вам не нужна реализация для класса управляемых объектов.

 @protocol NSManagedObjectProtocol <NSObject>
//Add NSManagedObject methods here. Like:
- (id)initWithEntity:(NSEntityDescription *)entity insertIntoManagedObjectContext:(NSManagedObjectContext *)context
@end

@protocol Person <NSManagedObjectProtocol>
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSDate *birthDate;
@end
  

Используйте протокол для доступа к вашим объектам.
Этот код будет существовать в каком-то менеджере:

 NSManagedObjectContext *context = //Get the context.
NSError *error = nil;
id<Person> p = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];
[p setName:@"PersonName"];
if ([context save:amp;error]) {
    //Handle error
}
  

Комментарии:

1. Думаю, это имеет смысл. Остальная часть моего приложения реализована с использованием set____: селекторов, подобных этому в любом случае! Спасибо 🙂