CoreData или SQLite для агрегации iOS - PullRequest
3 голосов
/ 09 декабря 2011

У меня есть приложение для iPhone, для которого требуется локальное хранилище.

Первоначально я думал о том, чтобы использовать базовые данные, что хорошо для большинства приложений, однако основная часть использует агрегации данных.В SQLite это стандартное использование MIN, MAX, AVG, GROUP_BY и т. Д.

Но базовые данные не очень хорошо реализуют их, так как они в основном используются для управления графами объектов.Имеет ли значение, если бы я выполнял вычисления в Obj-C после загрузки из CoreData или я должен придерживаться SQLite и отказаться от использования других компонентов системы CoreData?

Коллекции для агрегирования невелики (не более100 предметов говорят).Мне нужно делать что-то вроде раздачи.

Я знаю, что здесь нет конкретного ответа, просто хотелось бы получить второй вариант.Спасибо

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Я использую в своем приложении и Core Data, и FMDB (оболочку Objective-C для SQLite), и она отлично работает.Базовые данные добавляют «Z» перед именами таблиц и полей, поэтому, например, если у вас есть сущность Базовых данных с именем «Контакты», вы можете выполнить запрос, например SELECT COUNT(*) FROM ZCONTACTS, и он вернет вам результатыSQL-запрос.

0 голосов
/ 09 декабря 2011

Вы можете использовать оба.Сначала соберите ваши данные, выберите идентификатор и используйте

NSManagedObjectContext context; // Get it some how
NSManagedObject *obj = [context objectWithID:objectID];

, чтобы получить соответствующий управляемый объект.

0 голосов
/ 09 декабря 2011

Лично я бы остался с CoreData до тех пор, пока «большая часть приложения» не использует MIN, MAX, AVG… потому что тогда «большая часть приложения» все еще много, чем с SQLite.

...