2010-03-26 3 views
0

Я собираюсь создать приложение, имеющее базу данных мест, где есть местоположение (lon/lat), и я собираюсь создать dataModel. Actualy приложение очень простое, и все, что я хочу, это возможность загружать все места вокруг пользователя (скажем, в радиусе 30 милей).Данные геометки IPhone (SQLite или CoreData)

Лучше ли пользователю SQLite (есть ли там геопространственное расширение)?

У меня будет около 5000 мест в базе данных, и мне интересно, где я могу запросить базу данных, не влияя на производительность.

ответ

2

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

SQLite, с другой стороны, немного медленнее, но быстрее, чем CoreData в массовых операциях.

У меня есть приложения, использующие CoreData с записями 8k +, и у меня нет проблем. Единственная проблема, с которой я столкнулся, - это делать массовые операции, и я обновил свое приложение, чтобы использовать SQLite для данных, которые необходимо было обновить навалом.

Вы также можете получить доступ к SQLite с помощью CoreData.

+0

Хммм. Звук интересный. Как получить доступ к SQLite с помощью CoreData? С другой стороны, я немного запутался в том, как я мог CoreData и получить все место рядом с другим whitout, который на самом деле собирает много объектов и делает дистанцию ​​компаниона InMemory? не могли бы вы указать мне решение? – clide313

+0

CoreData был создан для обработки хранилищ данных как объектов, поэтому вы можете даже иметь XML и использовать его в качестве хранилища. Вам необходимо использовать NSPersistentStoreCoordinator и задать тип хранилища для NSSQLiteStoreType. Во всяком случае, я пропустил ту часть, где вы хотели получить радиус, если это так, обратитесь к SQLite, так как вы не можете иметь агрегатные функции в CoreData. И да, если вы идете с CoreData, вам нужно будет забрать объект в NSMutableArray и получить оттуда, что не похоже на хорошую идею. –

+0

Спасибо за помощь. Я думаю, что я должен пойти с SQLite, так как хочу выполнить поиск по радиусу. – clide313