Mogenerator и setPrimitiveType

У меня есть около полдюжины таблиц, пришедших с устаревшего веб-сервера. Все эти таблицы имеют столбец типа. Мне нужно синхронизировать имена этих столбцов на уровне приложения.

Используя mogenerator, базовый класс, который он создает должным образом, генерирует атрибут setPrimitiveType. Ну, Apple не нравится этот метод и отклонил наше приложение.

Можно ли изменить генератор, чтобы не создавать определенные методы атрибутов модели?

2 ответа

Да, можно точно настроить то, что создает mogenerator. Это делается путем обновления записей в шаблонах для машинных файлов. Например, следующие строки могут быть закомментированы из файла шаблона machine.h.

- (void)setPrimitive<$Attribute.name.initialCapitalString$>:(<$Attribute.objectAttributeType$>)value;

- (void)setPrimitive<$Attribute.name.initialCapitalString$>Value:(<$Attribute.scalarAttributeType$>)value_;

Первый является постоянным автором. Последний является скалярным аксессором, и при желании его можно даже переименовать.

Однако обратите внимание, что платформа Core Data, а не mogenerator генерирует базовые средства доступа, как указано в Руководстве по программированию основных данных Apple Docs:

Например, для объекта с атрибутом firstName Core Data автоматически генерирует firstName, setFirstName:, primitiveFirstName и setPrimitiveFirstName:. Базовые данные делают это даже для сущностей, представленных NSManagedObject. Для подавления предупреждений компилятора при вызове этих методов следует использовать функцию объявленных свойств Objective-C 2.0, как описано в "Декларации".

У меня была такая же проблема с ключевым словом type. Мое решение было вручную создавать и реализовывать такие методы, как

- (NSNumber *)primitiveType;
- (void)setPrimitiveType:(NSNumber *)value_;
Другие вопросы по тегам