Каков наилучший способ загрузки статических объектов в приложение для iOS?

У меня в списке около 100 адресов. Я хочу использовать класс CLGeocoder и методы geocodeAddressDictionary или geocodeAddressString, чтобы получить список CLPlacemarks для каждого адреса. Я не хочу, чтобы приложение делало это каждый раз при запуске (так как адреса никогда не меняются, и для этого требуется интернет). Как я могу статически хранить список из 100 объектов CLPlacemark, которые будут загружаться при каждом запуске приложения?

1 ответ

Решение

Я предлагаю:

Сохраните список в вашем приложении как файл.plist или файл JSON, который затем можно будет проанализировать при запуске в статическом NSDictionary или как переменную экземпляра объекта Singleton.

Сначала сериализуйте ваши 100 адресов в файл JSON. Вы можете попробовать использовать некоторые онлайн-инструменты, такие как: http://www.objgen.com/json

Получив текстовый JSON-файл, перетащите его в свой проект в XCode. Затем вы можете разобрать его, используя:

NSError *error;
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Addresses" ofType:@"json"];  
NSURL *localFileURL = [NSURL fileURLWithPath:filePath];
NSData *contentOfLocalFile = [NSData dataWithContentsOfURL:localFileURL];
NSDictionary *addresses = [NSJSONSerialization JSONObjectWithData:contentOfLocalFile 
                                            options: NSJSONReadingMutableContainers 
                                              error:&error];

Вы можете использовать тот же метод для десериализации файла PLIST.

Другие вопросы по тегам