2015-04-14 2 views
1

Я читаю документацию DBAccess, чтобы понять, может ли она соответствовать моим потребностям.Переход IOS DBAccess к новой структуре таблицы

Мой вопрос о миграции.

Например: У меня есть существующие приложения, реализуемый с DBAccess, используя таблицу "Person" со следующими полями:
- идентификатор
- имя
- фамилия
- адрес

Что происходит в базу данных, если я добавлю другие два поля в класс Person:
- email
- номер телефона
?
Добавляет ли DBAccess новые поля в таблицу базы данных?
Есть ли способ указать значения по умолчанию для новых добавленных полей?

ответ

1

Да, если вы добавите эти два дополнительных свойства, DBAccess автоматически добавит дополнительные столбцы.

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

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

+ (id)defaultValueForProperty:(NSString*)propertyName; 

в рамки, а затем назвать то, что при создании нового столбца будут пользователи, возможно, ожидать, что это произойдет в строку, а не один раз при создании столбец, поэтому они могут настроить это значение, возможно, рассчитать его из содержимого в другом месте.

Мне понравилась бы ваша обратная связь о том, что вы считаете подходящим решением.

Я лично склоняюсь к методу класса и экземпляра, и если разработчик реализует метод экземпляра, то каждая отдельная строка будет анализироваться и переписываться, что может быть медленным, но также очень полезной функцией.

В любом случае, для такой простой функции не требуется больше часа или около того. Нам просто нужно увидеть, можем ли мы увидеть какие-нибудь подводные камни.

Благодаря

+0

Ну, я думаю, что метод класса будет очень полезно, в частности, при добавлении новых (о создании) полей, которые не могут быть нулевыми. – Patrik

+0

Метод экземпляра, как вы говорите, может быть очень медленным для больших таблиц. Возможно, лучше предоставить способ запускать SQL-запрос в качестве исправления существующих данных, это может быть быстрее. Или возможность реализовать функцию класса, которая вызывается каждый раз, когда таблица изменяется. – Patrik

+1

Я принимаю это, поэтому я понимаю ваши аргументы позади этого, чтобы заставить запросы вести себя. Например, «WHERE surname ==» «ИЛИ фамилия IS NULL». Потому что все объекты будут иметь свои значения свойств по умолчанию. Например, если вам нужно добавить возраст столбца, хотя значение столбца в SQLite будет NULL, значение в классе будет равно 0. Когда этот объект будет сохранен, он будет сохранен с 0, а не NULL. Я собираюсь внести изменения, потому что они просты, но мне интересно, есть ли другой сценарий, о котором я должен думать, который я еще не рассматривал. –

Смежные вопросы