iOS Development – объединение города с NSTimezone в автономном режиме

Надеюсь, что все хорошо.

Поэтому я занимаюсь разработкой приложения iOS с часовым поясом. Приложение требует, чтобы у нас был список городов с высоким населением, и когда пользователь выбирает его, он определяет идентификатор часового пояса Olson, необходимый для построения объекта NSTimeZone (который мы затем используем для конверсий NSDate).

Мне удалось получить список городов и их соответствующих лат и lng, которые я планировал прокормить в конечной точке обслуживания Zonezone от Geoname, чтобы определить вышеупомянутый идентификатор часового пояса Olson для каждого города.

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

Всем спасибо!

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

Я загрузил список с разделителями табуляции с сайта Geonames.org, в котором содержится список городов, в котором также содержится идентификатор часового пояса Olson для каждого города. Существует несколько разных списков, которые вы можете загрузить с помощью ссылки на экспортную дампу Geoname (см. Ниже), но я отправился в список городов5000.zip, чтобы иметь довольно полный список городов, не будучи слишком раздутым.

Вы можете найти ссылки для скачивания и информацию о списках по ссылке ниже: http://download.geonames.org/export/dump/readme.txt

Поскольку в списке содержится много ненужной информации (например, координаты lat и lng), и потому, что мне нужны данные в формате .plist, чтобы их можно было легко использовать в приложении iOS, я написал простой скрипт Python, который бы извлекайте названия городов и временные интервалы из списка, сортируйте их в алфавитном порядке по названиям городов, а затем конвертируйте в формат .plist.

Для тех, кто интересуется, скрипт python выглядит следующим образом:

import json import httplib import os cities = () rows = [] # Open up the tab delim list from Geonames.org with open("cities15000.txt") as file: lines = file.readlines() # Reading each line in the list for line in lines: comps = line.split('\t') city = comps[1].strip() timezone = comps[17].strip() # Make sure there are no duplicates if not city in cities: cities = cities + (city,) row = {'city':city,'timezone':timezone} rows = rows + [row,] # Sort the rows based on the city name def cmp(a,b): if a['city'] > b['city']: return 1 elif a['city'] == b['city']: return 0 else: return -1 rows.sort(cmp) # Convert the array to json and then to plist jsonString = json.dumps(rows) with open("cities.json", "w") as jsonFile: jsonFile.write(jsonString) os.system('plutil -convert xml1 cities.json -o cities.plist') 

Вы должны строить отображение города / часового пояса только один раз (в разработке), а затем предоставлять готовое сопоставление с помощью приложения. Затем приложение никогда не нуждается в любом поиске в Интернете.

Вы также можете поместить файл на свой собственный сервер и периодически проверять приложение на наличие обновлений.

  • AFNetworking AFHTTPClient AFJSONRequestOperation не использует JSON-операцию
  • Программный вызов жестов tap для UIView
  • Обнаружение построенных CLRegions с помощью CLLocationManager в ios на основе направления движущегося транспортного средства
  • Как распечатать переменные C в LLDB Debugger?
  • В iOS tableview, почему раздел является NSIndexSet?
  • настройка размера UIPopoverController на основе количества строк в UITableView
  • Xcode 6.2 Parse Issue в классах iOS
  • Различать вкладку против нажатия на вкладке UITextField?
  • Авария UIScrollView
  • Создайте и используйте Enum в Objective-C
  • Добавление CLLocationCoordinate2D к настраиваемому объекту MKAnnotation
  • Interesting Posts

    UIActivityViewController и Notes

    Метод передачи через несколько несвязанных классов

    Can Singleton Inheritance может быть достигнуто в iOS

    На iPad, как я могу заставить встроенный звук на моей веб-странице перестать играть, когда браузер закрыт?

    найти тип перечисления в массиве

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

    camera.getPicture отстает слишком много времени в кордове ios из избранной галереи

    Удалите пользовательский UINavigationBar для MFMailComposer и MFMessageComposer

    Как создать StackView с шириной = наибольшая ширина ребенка в iOS?

    Реальный сценарий для реализации MVC vs MVVM vs VIPER для проектов на базе iOS

    Проблема Xamarin NetworkReachability SetCallBack после перехода на x64 iOS

    Как анимировать inputAccessoryView

    Как добавить изображение и заголовок в заголовок таблицы IOS

    Как набрать символ pi на быстрой игровой площадке. опция + p не работает на моей клавиатуре MacBookPro …?

    Снимать снимок экрана (UIImage) из UIView занимает слишком много времени

    Давайте будем гением компьютера.