Pull to refresh

Comments 18

Самое главное не сказали — почему взяли именно FMDB. От себя могу сказать, что она хороша именно как обёртка над SQLite, не слишком абстрагирующая от работы напрямую с SQL, но существенно упрощающая некоторые вещи. По сравнению, например, с SQLite.swift, который мы использовали раньше, и который оказался не слишком-то гибок в чуть более сложных ситуациях.
В этом гайде будут использоваться файлы с objective-c, поэтому не надо ждать порта FMDB на Swift.
Рекомендую взглянуть на GRDB.swift. По сути очень напоминает FMDB и мейнтейнер проявляет просто какую-то нереальную гиперактивность в решении возникающих вопросов.
Здравствуйте, спасибо, интересная штука, посмотрю.
(нисколько не затрагивая полезности статьи)
первое прочтение заголовка вызвало в памяти:
"Это старкон2, запущенный в DosBox под иксами в Дебиане, который запущен в VMWare, которая в WinXP
Куда мне вопрос о неработающем звуке задавать?"
SQLite.
Ну хоть заголовок-то после написания прочтите.
Тоже интерсует вопрос: чем так приглунулся именно FMDB? Личный опыт работы с этой библиотекой оставил только отрицательные впечатления, особенно это касалось многопоточной работы.
Честно говоря, я просто не нашел альтернативы, если попробовать загуглить этот вопрос, который я описал, нет ни одного актуального гайда на русском языке, да и не на русском тоже. Поэтому просто на что наткнулся то и внедрил, надеюсь мой опыт кому-то поможет. Благодаря первому комментарию теперь знаю альтернативу. А чем Вы пользуетесь на Swift2, что посоветуете?
Используем Core Data. Это известный ORM, подход и работа с ним отточена, доступен сразу. Да, Core Data немного неповоротливый зверь, но только в начале пути разработки, потом начинаешь понимать почему лучше его использовать. Несколько раз столкнулся с ситуацией, когда коллеги по команде настояли на работе с FMDB, а потом (когда модель данных стала сложной) задумывались перейти обратно на Core Data, но отказывались от этой идеи и продолжали "есть кактус", так как фактически нужно было переписывать слой доступа к данным, причем весь. Дпугое дело,

З.Ы: прошу прощения за оффтоп :)
Для своего приложения я тоже начал использовать Core Data, но столкнулся с проблемой primary key, то есть дублирование данных. Для меня как человека пришедшего с веб разработки это не понятно до сих пор. Как с этим обходитесь?
Аналогично :) Тоже пришли с веб-разработки, с .NET. В подавляющем большинстве случаев сначала проверяем данные на наличие. Хотя, конечно, бывают ситуации, когда это не нужно. Что касается Core Data, то здесь все проще, мы реализовывали в дополнительном слое данных метод, который при вставке проверял наличие определнного ключа (если нужно). То есть сами реализовывали проверку на primary key. Лагов не замечали, ибо работали с памятью, а не с диском.
FMDB по умолчанию не поддерживает WAL(Write-Ahead Logging). То есть при длительной записи чтение будет блокироваться до окончания записи. Нужно специально проставлять флаги для нее.
Чем это плохо и как это победить? (что использовать)
Чем это плохо — если записывается большой объем данных, то если в это время выполнить запрос на чтение, то он выполнится только по окончании записи, а это может быть достаточно долгая задержка.
Как решить? Что смог нагуглить(ответ Hamiseixas), но у меня это решение не сработало. Поэтому использовал Core Data.
В конце концов получается, что чаще всего для реализации каки-то базовых функций для работы программы (работа с локальными данными, работа с графикой) возращаемся к использованию решений, которые предоставляет компания-разработчки OS, в нашем случае Apple.Так что все эти FMDB от лукавого :)
Не могу согласится, вчера записывал данные и сразу их получал, coredata подвесила мне приложение на несколько секунд, fmdb моментально все сделал. Так что тут наверное зависит от частных случаев, неплохо конечно знать и то и другое и уметь применять.
Бред. Когда будете работать с нормальным объемом данных, расскажете про кордату, особенно про скорость работы на старых девайсах.
Не понял вашего сообщения. Написал фактическую ситуацию. Вы что хотели сказать?
Мое сообщение было адресовано Олегу, с Вашим мнением я полностью солидарен.
Sign up to leave a comment.

Articles