Я не могу понять, как расширить контроллер представления с помощью асинхронного контроллераIOS

Программируем под IOS
Ответить
Anonymous
 Я не могу понять, как расширить контроллер представления с помощью асинхронного контроллера

Сообщение Anonymous »

Вот типичное предупреждение, которое вы видите в каждой базе Swift Code, см. . < /p>
Вы можете использовать его типичным «водопадом»: < /p>
simple(alert: "Let's proceed..") {
await comms.sendInfo()
simple(alert: "Successful! Next step?") {
await comms.load()
simple(alert: "Ready? Calculate?") {
ai.process()
simple(alert: "Create diagram?!") {
await paint.stuff()
}
}
}
}
< /code>
Конечно, что вы хотите в этом столетии .. < /p>
await simple(alert: "Let's proceed..")
await comms.sendInfo()
await simple(alert: "Successful! Next step?")
await comms.load()
await simple(alert: "Ready? Calculate?")
ai.process()
await simple(alert: "Create diagram?!") {
await paint.stuff()
< /code>
Следовательно, что -то вроде, < /p>
extension UIViewController {

///Async trivial alert.
func simple(alert: String) async {
let alert = UIAlertController(title: "", message: alert, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Understood", style: .default) { _ in
await withCheckedContinuation { inct in
alert.dismiss(animated: false) {
inct.resume()
}
}
})
await withCheckedContinuation { ct in
present(alert, animated: false) {
ct.resume()
}
}
}
}
< /code>
Однако эта попытка приводит к -< /p>
Invalid conversion from 'async' function of type '(UIAlertAction)
async -> Void' to synchronous function type '(UIAlertAction) -> Void'
< /code>
Я не могу понять, как сделать это встроенным в качестве одного расширения на uiviewcontroller < /code>. < /p>
Есть ли способ? /> Типичное «старомодное» синхронизационное оповещение: < /p>
///Trivial alerts, etc.
extension UIViewController {

///Trivial alert, with completion if you need it.
func simple(alert: String, completionOnMain: (()->())? = nil) {

let alert = UIAlertController(title: "", message: alert, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default) { _ in
DispatchQueue.main.async { completionOnMain?() }
})
present(alert, animated: false, completion: nil)
}



Подробнее здесь: https://stackoverflow.com/questions/796 ... lert-contr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»