Документирование атрибутов сущности базовых данных с помощью записей о пользователе - PullRequest
12 голосов
/ 05 марта 2012

Мы ищем способ документировать сущности базовых данных. Пока единственные реальные варианты, которые я придумал, это:

  1. Документирование извне с использованием UML или другого стандарта
  2. Создание подклассов NSManagedObject для каждой сущности и использование комментариев к коду
  3. Используйте словарь User Info для создания пары ключ-значение, содержащей комментарий строки

Вариант 1 кажется слишком большой дополнительной работой и чем-то, что почти наверняка устареет в 99% случаев.

Вариант 2 выглядит более естественным и более правильным, чем вариант 1. Самый большой минус здесь в том, что эти комментарии потенциально могут быть потеряны, если этот класс модели будет регенерирован с использованием Xcode.

Вариант 3 выглядит немного менее правильным, чем вариант 2, но имеет дополнительное преимущество, заключающееся в добавлении возможностей автоматизации в отношении извлечения метаданных. Например, в одном из наших приложений нам нужно внимательно следить за тем, что мы храним локально на устройстве, а также синхронизировать с iCloud. Используя пользовательский информационный словарь, довольно легко автоматизировать создание какой-либо формы артефакта, который может быть проверен как внутренне, так и внешне (клиентом) на соответствие

Итак, мой вопрос: не будет ли целесообразным использовать для этой цели словарь информации пользователя? И есть ли другие варианты, которые я пропускаю?

Ответы [ 3 ]

6 голосов
/ 05 апреля 2012

Вариант 2 - это то, что я использую каждый раз. Если вы посмотрите на свою базовую модель данных (something.xcdatamodeld или something.xcdatamodel), вы увидите что-то вроде рисунка ниже.

core data entity in XCode

Вы можете привязать свою сущность к любому классу, который хотите, а затем поместить туда комментарии. Если вы оставите имя вашей сущности таким же, как и имя вашего класса, это поможет вам понять, что вы сделали.

Кроме того, это также дает вам возможность добавить автоматизацию. Вы можете сделать это, создавая собственные методы получения и установки (методы доступа) и собственный метод description.

2 голосов
/ 05 апреля 2012

Я использую вариант 2 и категории. Я позволю XCode генерировать подклассы NSManagedObject и буду использовать категорию для каждого из этих подклассов. С категориями я не теряю свои изменения, сделанные в категориях, могу документировать, создавать собственные методы получения и установки, и я все еще могу использовать сгенерированные подклассы.

1 голос
/ 10 апреля 2012

Если мы говорим только о документировании (т.е. написании более или менее больших объемов текста, который предназначен для чтения людьми) ваших классов, я бы использовал опцию 2.

Если вы обеспокоены возможностью перезаписи XCode ваших классов в варианте 2, вы можете рассмотреть возможность создания двух классов для каждого объекта: один, который генерируется XCode и всегда может быть заменен (вы обычно не трогаете этот файл) и еще один, который наследует от сгенерированного и в который вы помещаете все свои настройки и комментарии.

Этот двухклассовый подход предложен mogenerator .

Хотя если вам нужно хранить некоторые метаданные с объектами, которые будут обрабатываться программным способом, userInfo идеально подходит для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...