Поток приложений для синхронизации фоновых задач iOS - PullRequest
0 голосов
/ 09 ноября 2018

Я программирую в iOS не так давно. В основном я программировал такие вещи, связанные с пользовательским интерфейсом, как анимация, пользовательские UIControls и т. Д.

Мне нужно в моем новом приложении: Отображать индикатор активности загрузки и в то же время:

  • загрузить некоторые удаленные данные с сервера, проанализировать их и сохранить в локальных основных данных
  • загрузить некоторые данные из локальных основных данных
  • получить пользовательскую позицию из службы определения местоположения

После этого у меня есть все данные, необходимые для отображения контроллера следующего вида и отключения индикатора загрузки.

Вопрос: как мне все это сделать? Мне нужно поддерживать iOS9, iOS10, 11, 12. Я понимаю, что это нужно делать в фоновых потоках, а затем мне нужно объединить все данные из каждой задачи и переключиться на следующий контроллер представления. Я не могу использовать какие-либо внешние библиотеки, такие как rx-swift или promise-kit. Может быть, есть какой-нибудь опытный разработчик iOS, который может дать мне несколько основных рекомендаций, как подходить к такого рода потокам приложений? Я могу представить, что есть много способов сделать это, некоторые из них лучше, а некоторые хуже. Любые рекомендации были бы очень полезны для меня. Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2018

Это очень сложный вопрос, и, как вы сказали, все эти проблемы можно решить несколькими способами. Но наверняка я могу дать вам несколько советов о том, какие шаги лучше выполнить:

  • Запускать в отдельном потоке управление всеми вещами, касающимися связи по сети. Возможно, вы можете запустить его в отдельной очереди, используя класс DispatchQueue (). После того как вы получили данные в том же потоке, возможно, вы сможете напрямую преобразовать эту информацию и сохранить ее в базе данных CoreData.
  • Для сохранения в CoreData вам нужно сначала знать, как он работает, поэтому в основном ищите несколько действительно простых руководств о том, как создать с нуля вашу первую базу данных в XCode. После того, как вы сможете запустить и выполнить очень простой, вы сможете перейти ко второму шагу и попытаться интегрировать его с данными, которые вы ранее загрузили из сети. Вот хорошая статья для вас: https://www.raywenderlich.com/7569-getting-started-with-core-data-tutorial.
  • Получить местоположение - это отдельная область исследования, потому что вы должны изучить, какие фоновые режимы разрешены в iOS (а на самом деле их разрешено лишь немногим). После этого вам нужно будет выяснить, к какой категории относится приложение для фоновой локации вашего программного обеспечения. После этого вам нужно углубиться и выяснить, как протокол и делегаты работают внутри Swift / Objective-C, чтобы правильно управлять последним значением местоположения, полученным датчиками. Вот хорошая статья для вас: https://www.raywenderlich.com/5247-core-location-tutorial-for-ios-tracking-visited-locations.
  • В конце, когда вы соединили все эти потоки, вы можете подумать о том, как отобразить индикатор загрузки. По сути, вам нужно перетащить его из инструментов в раскадровку, связать его с помощью IBAction или IBOutlet, в зависимости от того, когда вы хотите его показать и в каком конкретном случае. А затем используйте относительный метод startAnimating или stopAnimating в правильном потоке кода (это действительно зависит от того, как вы структурировали все предыдущие пункты маркера).

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

...