Реализация инкрементального поиска на iphone - PullRequest
1 голос
/ 15 сентября 2010

У меня есть много данных, хранящихся локально (более 10000 записей данных) (пока не решено, как это сделать - это часть вопроса))?

Как настроить данные локально?
XML?Plist?sqlite?

Должен ли я использовать Core Data для доступа?

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

10K записей не так уж плохо. Убедитесь, что вы установили размер пакета выборки. Например, если на iPhone, возможно, только 10 строк видны одновременно, значит, размер пакета 10 имеет смысл. Кроме того - и это абсолютно необходимо для достижения приличных скоростей - обязательно установите флажок «Индексировано» в Инспекторе моделей данных для соответствующих полей в вашей базовой модели данных.

Если набор данных увеличивается, то вы можете рассмотреть более изощренное решение. См. «Направленный ациклический граф слов» в Википедии.

Если вы пойдете на это, вы можете найти код реализации на Sourceforge . Это C ++, но вы можете переименовать ваш файл Objective C .m в .mm и включить любой код C ++.

0 голосов
/ 15 сентября 2010

Вы, вероятно, хотите использовать Базовые Данные, и вы определенно хотите, если есть какие-либо отношения между записями. Без базовых данных для управления отношениями сложность приложения может возрасти.

Распространенным заблуждением является то, что поскольку базовые данные автоматически справляются со многими сложностями, то должен быть неизбежный компромисс в производительности, так что хотя базовые данные могут быть просты в реализации, они должны быть самым медленным решением. Оказывается, это обычно не так из-за огромного количества настроек, которые Apple сделала под капотом. Довольно сложно написать решение, которое может лучше всего использовать базовые данные для большинства случаев использования.

Я рекомендую вам начать с самого простого решения Core Data, а затем усложнить его, только если вы протестируете простое решение и обнаружите, что оно замедляется. Я бы начал с простого перебора и посмотрел, достаточно ли это быстро. Следующим шагом будет выполнение выборок только на одном атрибуте объекта, например атрибут name объекта Person, затем извлекать весь объект только при необходимости. Если это все еще медленно, вам придется подумать о реализации какой-то древовидной структуры в графе сущностей (что не сложно).

Преждевременная оптимизация - корень всего зла. Не пытайтесь принимать решения по оптимизации без данных, полученных в результате тестирования. Вы будете тратить больше времени в долгосрочной перспективе. Начните с простого и добавляйте сложность только тогда, когда это абсолютно необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...