#objective-c
#objective-c
Вопрос:
У меня многоцелевое приложение, и я хочу переместить идентичные классы из 2 разных целевых источников в общую структуру поверх них.
Однако два класса, которые я хочу переместить, генерируются 2 разными моделями Core Data (по одной для каждого приложения). Они идентичны, потому что сущности в обеих моделях идентичны.
Так, например, они оба имеют следующий код:
@property (nonatomic, retain) NSSet* Character;
@interface MyClass (CoreDataGeneratedAccessors)
- (void)addCharacterObject:(Character *)value;
- (void)removeCharacterObject:(Character *)value;
- (void)addCharacter:(NSSet *)value;
- (void)removeCharacter:(NSSet *)value;
И этот код сложнее: SubStage1 и SubStage2 — это 2 класса модели основных данных, и оба они являются подклассами SubStage .
Здесь код отличается:
@property (nonatomic, retain) SubStage1 * SubStage1;
и
@property (nonatomic, retain) SubStage2 * SubStage2;
Могу ли я изменить предыдущий код из обоих подклассов на:
@property (nonatomic, retain) Stage * Stage;
Мне интересно, должен ли один и тот же код взаимодействовать с другой моделью core data, в зависимости от скомпилированной цели. Боюсь, это больше не работает, потому что объекты основных данных SubStage1 и SubStage2 относятся к подклассам SubStage1 и SubStage2…
Надеюсь, вопрос ясен. Спасибо
Ответ №1:
Если классы идентичны, используйте только один, но включите его в оба целевых объекта. Каждый целевой объект может иметь свой собственный файл модели данных, но совместно использовать один и тот же модуль класса.
Комментарии:
1. Я обновил вопрос. Что делать, если мне нужно изменить свойства, сгенерированные Core Data, относящиеся к 2 разным классам, которые наследуются от одного и того же суперкласса? (смотрите вопрос)
2. Почему вы их подклассируете? Если вы создадите подкласс просто для добавления дополнительных методов и свойств, которые вы не собираетесь хранить в базе данных, это сработает. Вы можете создать объект core data, ссылающийся на класс SubStage, если вам не требуется, чтобы он работал со свойствами, которые определены в SubStage1, но не существуют в SubStage.