Лучший способ хранить и извлекать тысячи мест на iOS - PullRequest
0 голосов
/ 17 августа 2011

Моя ситуация: у меня есть приложение, которое должно хранить 10 000–30 000 местоположений в каком-либо методе хранения, которые затем отображаются в MKMapView в виде отдельных выводов.У меня также есть сервер, который должен быть в состоянии добавить в базу данных путем выталкивания изменений.

С помощью группировки выводов я устранил все проблемы с MKMapView, теперь мой основной акцент делается на скорости, хранении ивозможность добавлять и заменять содержимое хранилища.В настоящее время я занимаюсь тем, что у меня есть текстовый файл с 1000 местоположениями в формате JSON, затем они просто считываются в виде массива и отправляются в мое пользовательское представление карты (никаких проблем там нет).Моя единственная проблема заключается в том, как я могу обновить этот текстовый файл (вместо того, чтобы загружать огромные объемы данных) и хранить почти 30000 мест.

Возможно ли это?Кажется, моя текущая настройка может прекрасно масштабироваться, просто эта система обновлений вызывает у меня головную боль.

1 Ответ

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

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

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

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

...