Доступ к таблицам CoreData из fmdb - PullRequest
0 голосов
/ 25 августа 2011

Я использую CoreData в своем приложении для операторов DML, и с этим все в порядке.Однако я не хочу использовать NSFetchedResultsController для простых запросов, таких как получение количества строк и т. Д.

Я решил использовать fmdb, но не знаю реальных имен таблиц для написания sql.Имена сущностей и таблиц не совпадают.Я даже заглянул внутрь .sqllite файла с TextEdit, но без надежды :) FMResultSet * rs = [db getSchema] не возвращает никаких строк

Может быть, есть лучшее решение моей проблемы?

Заранее спасибо

1 Ответ

0 голосов
/ 25 августа 2011

Core Data ставит перед всеми именами SQL префикс Z_. Используйте инструменты командной строки SQL, чтобы проверить файл постоянного хранилища и посмотреть, какие имена он использует.

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

Базовый API данных предоставляет необходимые вам функции. Я просто использую запрос на выборку, который выбирает определенное значение , используя NSExpressionDescription для выполнения функции. Это позволяет вам получать информацию, такую ​​как счетчики, минимумы, максимумы и т. Д. Вы можете создавать и использовать такие выборки независимо от NSFetchedResultsController.

Core Data API очень многофункциональный. Если вы ищите решение для данных за пределами API, скорее всего, вы что-то упустили в API.

...