172 похожих чатов

Я опять возможно с глупым вопросом. Сразу извиняюсь я ведь

не программист на swift, но иногда приходится баги править ;(
Вообщем меня есть класс который реалисте протокол в котором один метод (но это не так важно 😉 который вызывается когда происходит смена состояния в сервисе который я использую. По пропитом я получаю некий статус: пусть это будет connected и disconnected.

Задача у меня следующая. Я по нажатию на кнопку дергаю некий метод (пусть это будет connect) и в нем я посылаю команду сервису что нужно совершить connect. И чрез какое-то время ко мне прилетит статус connected.
Так вот мне нужно дождаться этого статуса и что-то сделать но только если connect инициировал мой вызов. В противном случае ничего делать не нужно. Так вот вопрос как правильно на swift это сделать.

Сейчас я накостылил так:
private var onConnectedTask: (() -> Void)? = nil

В своем методе я делаю:
onConnectedTask = {
// do something
}

А в методе которые реализован через протокол:
if let onConnectedTask = onConnectedTask {
onConnectedTask()
}


А если вдруг мне нужно отменить это действие то просто обнуляю
onConnectedTask = nil

Оно конечно работает но меня дико коробит от такого решения 😉 Какое-то оно не красивое чтоли. Так вот как правильно это реализовать ?

1 ответов

9 просмотров

ну это типиные задачи запросов сеть, гуглите swift networking пробуйте

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

Обсуждают сегодня

подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
11
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
народ хелп. предыстория: pro-2015+high sierra ставил imazing[TNT], да еще что-то TNT, при попытке перетащить иконку в "программы" - кернел паники и мак перезагружался в один п...
Gcat@
7
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Народ, есть возможность объяснить VS Code, что некий lua-модуль стандартный и грузится по умолчанию? Т.е. хост программа добавляет этот модуль наряду с модулями string, debug ...
Sl
9
Добрый день. Абракадабра в 12-й студии ввела новый тип поля БД TSQLTimeStampOffset, использую в постгресе timestampz и вот с 12-й версии начались чудеса! До этого поля times...
Delphi Photo
9
Коллеги, здравствуйте! А можно узнать ваше мнение относительно Wolfram Mathematica vs Julia? Просто у меня стоит выбор между тем, чтобы продолжить преподавать Wolfram Mathemat...
Илья Гаража
10
Карта сайта