#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____: селекторов, подобных этому в любом случае! Спасибо 🙂