Похоже, что в моем приложении для iOS (которое я пишу в Xcode с Swift) функции, запускаемые после нажатия кнопки, запускаются сразу, без учета каких-либо спящих функций между ними.
Здесьнемного предыстории:
Чтобы создать линию связи между моим приложением для iPhone и Raspberry Pi, я использую хранилища json (https://jsonstorage.net/). То, как приложение работает, это обновление jsonbin, созданный на вышеуказанном сайте и отправляющий электронное письмо в виде текстового сообщения в Raspberry Pi (Raspberry Pi использует Adafruit FONA для обработки текстовых сообщений), и это вызывает запуск Pi для сбора данных из корзины json.был обновлен строкой, которая сообщает Pi, что делать. Получив эту строку, Pi что-то делает и добавляет информацию в другую корзину json. Затем я получаю доступ к этой корзине в своем приложении и использую ее для обновления определенных переменных.
Вот код, где выполняются функции (нажата кнопка, которая выдвигает новый контроллер вида; здесьон viewDidLoad()
функция для этого нового VC):
override func viewDidLoad() {
super.viewDidLoad()
uploadJsonData(dataString:"varsData")
sendEmail(body:"app varsData")
sleep(15)
collectData()
}
Концептуально, этот код должен работать.Если у меня есть кнопка, которая при нажатии пользователем запускает функции uploadJsonData()
и sendEmail()
, то пользователь ждет 15 секунд (обратите внимание, что если у меня есть sleep(15)
как часть первой кнопки, этоt), затем пользователь нажимает другую кнопку, которая запускает функцию collectData()
, затем код будет работать, как ожидается, и переменные будут обновлены новыми данными сразу после нажатия этой второй кнопки.Однако это не относится к приведенному выше коду: вместо этого переменные обновляются с данными до обновления второго json bin, а сам второй json bin не обновляется, по крайней мере, через 15 секунд после всех функцийзапустить, независимо от продолжительности функции сна (подразумевая, что сон ничего не делает, и все запускается сразу, или, по крайней мере, все взаимодействия с Интернетом происходят сразу).У кого-нибудь есть идеи относительно того, почему это / как это исправить?