Где вызывать API REST в iOS Swift (стандартный подход) [дубликат]

Убедитесь, что вы не закрываете базу данных. Используя db_close () перед запуском вашего запроса:

Если вы используете несколько запросов в скрипте, даже если вы включая другие страницы, содержащие запросы или соединение с базой данных, возможно, что в любом месте вы будете использовать db_close (), который закроет ваше соединение с базой данных, поэтому убедитесь, что вы не делаете эту ошибку в своих сценариях.

6
задан Kirti 9 November 2015 в 11:28
поделиться

6 ответов

Метод

viewDidLoad вызывается в первый раз, когда UIViewController сначала загружается, и когда он появляется, а затем вы снова входите в него в это время viewDidLoad. Поэтому, если вы хотите загрузить API только один раз, тогда viewDidLoad - лучшее место для вызова API.

viewWillAppear вызывается каждый раз, когда вы входите в это UIViewController, и это загрузка места API, когда вы хотите получить обновленные данные (обновленные данные).

viewDidAppear также называется как viewWillAppear, но бит опоздал, чем viewWillAppear, поэтому, если вы хотите вызывать API каждый раз, Лучшим местом является метод viewWillAppear.

Поскольку метод viewDidAppear вызван с опозданием с viewWillAppear, и вы просто запрашиваете API, поэтому ответ API может быть запоздалым и если ваш пользовательский интерфейс изменяется на основе API ответ, тогда он застрял в пользовательском интерфейсе приложения, чтобы было лучшее место для вызова API либо viewDidLoad & amp; viewWillAppear.

19
ответ дан reydelleon 25 August 2018 в 09:51
поделиться

Если мы останемся в одном и том же ViewController, три метода viewdidload, viewwillappear, viewdidappear не будут вызываться снова. Поэтому мы остаемся в одном контроллере представления, мы получаем данные с сервера, мы должны вызвать метод перезагрузки после получения данные. Надеюсь, этот ответ вам поможет.

0
ответ дан Alice 25 August 2018 в 09:51
поделиться

Я думаю, что viewWillAppear - лучшее место для загрузки данных из API. Поскольку viewDidLoad вызывается один раз при загрузке представления, но viewWillAppear вызывается, когда он загружается из родительского представления или дочернего представления.

0
ответ дан Dhiman Ranjit 25 August 2018 в 09:51
поделиться

viewDidLoad вызывается один раз. Если вы используете навигационный контроллер и выполняете резервный контроллер, этот метод viewDidLoad никогда не будет вызван. Пока вы снова не создадите этот ViewController (т. Е. [NavContoller pushViewController]). Если ваши данные api никогда не изменят жизненный цикл этого контроллера просмотра, это лучшее место для вызова вашего API. Но если ваши данные api необходимо часто звонить (т. назад и push.forth этот контроллер представления], тогда вы не должны вызывать api здесь.

viewWillAppear: перед представлением контроллера контроллера. Если вы вызываете вас api внутри этого метода, пользовательский интерфейс будет стекаться до завершения загрузки данных. который выглядит странно. Перед загрузкой представления viewController вызывается этот метод «viewWillAppear». Именно по этой причине это имя «viewWillAppear». Это означает, что это представление будет загружаться через некоторое время (т. Е. Через несколько секунд). Если вы вызовете свой api здесь после того, что произойдет, проанализируем. Скажем, ваш ответ возврата api через 10 секунд. Затем UI замерзнет / застрянет в течение 10 секунд, и через 10 секунд вы увидите ваше мнение.

viewDidAppear: после завершения отображения контроллера представления. Поэтому вам необходимо вызвать ваш API загрузки внутри этого метода.

1
ответ дан Jamil 25 August 2018 в 09:51
поделиться

Вам не нужно вызывать API каждый раз, когда вы переходите на просмотр контроллера, вам нужно вызывать его один раз.

Если у вас есть TableView с ячейкой, и эта ячейка получает от API и откроется новый viewController, когда вы нажимаете на него.

Итак, здесь вы не добавите свой API в:

  1. viewWillAppear ()
  2. viewDidAppear ()

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

Пример: контроллер навигации:

Предположим, что Fruits and Cars будут представлены из API.

, когда вы нажимаете на ячейку фруктов, вы перейдете к пункту viewController:

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

В этом случае мы используем viewDidLoad () для обработки запроса API

0
ответ дан Mohammed Ali Khaled 25 August 2018 в 09:51
поделиться

viewDidAppear определенно не тот, который вы хотите использовать, он «приостанавливает» представление от ответа во время загрузки данных.

Обычно viewDidLoad - это тот, который вы хотите поместите его.

0
ответ дан Zhihao Cui 25 August 2018 в 09:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: