Здравствуйте. В этой статье я опишу процесс создания простейшего приложения для iOS и внедрение в него используемого мной метода для обеспечения корректной работы с русским (и не только) языком таких SQLite-конструкций, как UPPER/LOWER, LIKE или ORDER BY.
Описанный метод использовался при разработке в XCode 4.2 под управлением OS X Lion 10.7.2.
Ниже очень подробная инструкция с картинками.
Нужно скачать необходимые файлы:
Запускаем XCode, создаём новый проект с шаблоном iOS Application — Single View Application, нажимаем «Next»:
Вводим название проекта, снимаем галочки со всех чекбоксов, нажимаем «Next»
Выбираем директорию для сохранения проекта. Готово.
Слева в Project Navigator щелкаем по самому верхнему элементу иерархии, чтобы посмотреть информацию и свойства нашего проекта, внизу нажимаем кнопку «Add Target»
Выбираем iOS Framework & Library — Cocoa Touch Static Library, нажимаем Next
Вводим имя для будущей библиотеки. Finish.
Берем файлы, которые мы скачали в начале статьи, и тянем их в только что созданную группу (libsqliteunicode) в Project Navigator
В появившемся окне отмечаем галочками обе цели (Add to targets). Finish.
Опять открываем свойства проекта, из списка targets выбираем созданную libsqlunicode, переходим на вкладку build phases, разворачиваем список «Link Binary with Libraries» и убираем из него Foundation.framework.
Переходим на вкладку build settings и в параметре Preprocessor Macros устанавливаем значение
Из списка targets выбираем sqliteunicode, переходим на вкладку build phases, разворачиваем список «Target Dependencies» и добавляем в него нашу libsqliteunicode
Для того, чтобы всё это заработало так, как нам надо, в заголовочном файле контроллера вашей базы данных следует добавить строчки
Перед использованием базы данных, нужно вызвать
После окончания работы с базой для освобождения памяти вызываем
В остальном используем нашу библиотеку как обычную libsqlite3.dylib
Рабочий пример, демонстрирующий подключение базы и поиск по ней с помощью Search Bar and Search Display Controller: скачать (4 Мб)
UPD:
Рабочий пример с измененным вариантом: Скачать (1.5 Мб)
Кстати, размер получившегося .app в первом варианте — 1 210 597 байт
Во втором — 266 332
Описанный метод использовался при разработке в XCode 4.2 под управлением OS X Lion 10.7.2.
Ниже очень подробная инструкция с картинками.
Для начала
Нужно скачать необходимые файлы:
- Исходные коды SQLite amalgamation (без autoconf) с сайта разработчика (2 файла в архиве)
- Файлы sqlite_unicode.c и sqlite_unicode.h, например, отсюда
Создание нового проекта
Запускаем XCode, создаём новый проект с шаблоном iOS Application — Single View Application, нажимаем «Next»:
Вводим название проекта, снимаем галочки со всех чекбоксов, нажимаем «Next»
Выбираем директорию для сохранения проекта. Готово.
Добавление в проект поддержки SQLite
Слева в Project Navigator щелкаем по самому верхнему элементу иерархии, чтобы посмотреть информацию и свойства нашего проекта, внизу нажимаем кнопку «Add Target»
Выбираем iOS Framework & Library — Cocoa Touch Static Library, нажимаем Next
Вводим имя для будущей библиотеки. Finish.
Берем файлы, которые мы скачали в начале статьи, и тянем их в только что созданную группу (libsqliteunicode) в Project Navigator
В появившемся окне отмечаем галочками обе цели (Add to targets). Finish.
Опять открываем свойства проекта, из списка targets выбираем созданную libsqlunicode, переходим на вкладку build phases, разворачиваем список «Link Binary with Libraries» и убираем из него Foundation.framework.
Переходим на вкладку build settings и в параметре Preprocessor Macros устанавливаем значение
SQLITE_CORE SQLITE_ENABLE_UNICODE
Из списка targets выбираем sqliteunicode, переходим на вкладку build phases, разворачиваем список «Target Dependencies» и добавляем в него нашу libsqliteunicode
Работа с библиотекой.
Для того, чтобы всё это заработало так, как нам надо, в заголовочном файле контроллера вашей базы данных следует добавить строчки
#import "sqlite3.h"
#import "sqlite3_unicode.h"
Перед использованием базы данных, нужно вызвать
sqlite3_unicode_load();
После окончания работы с базой для освобождения памяти вызываем
sqlite3_unicode_free();
В остальном используем нашу библиотеку как обычную libsqlite3.dylib
Рабочий пример, демонстрирующий подключение базы и поиск по ней с помощью Search Bar and Search Display Controller: скачать (4 Мб)
UPD:
Вариант без перекомпиляции SQLite amalgamation:
- Добавляем в проект стандартный libsqlite3.dylib
- Добавляем туда же файлы sqlite_unicode.c и .h из примера в статье
- Устанавливаем параметры препроцессора на SQLITE_CORE SQLITE_ENABLE_UNICODE
- Компилим
Рабочий пример с измененным вариантом: Скачать (1.5 Мб)
Кстати, размер получившегося .app в первом варианте — 1 210 597 байт
Во втором — 266 332