Nano Hash - криптовалюты, майнинг, программирование

Ошибка при отображении предупреждения

Я создаю экран регистрации и использую firebase sdk на бэкэнде. я добавил несколько условий if в мою форму регистрации, и когда когда-либо, если текстовое поле остается пустым в форме и нажата кнопка регистрации, я показываю UIAlertView с заголовком, сообщением и кнопкой ok. но я вижу исключение Thread при запуске приложения, которое говорит

Приложение пыталось представить контроллер модального представления на себе. Представляющий контроллер — ‹ UIAlertController: 0x7fb750849200>.

и показать стек, и в конце стека ошибок он говорит

libc++abi.dylib: завершение с необработанным исключением типа NSException

код для моей функции оповещения

func ShowAlert(Title:String,Message:String){

    let alert = UIAlertController(title: Title, message: Message, preferredStyle: UIAlertControllerStyle.alert)
    alert.addAction(UIAlertAction(title:"OK", style: UIAlertActionStyle.default, handler: { (action) in
        alert.dismiss(animated: true)
    }))

    alert.present(alert,animated: true)
}

Я чувствую, что это какая-то проблема основного потока, но я не знаю, как ее решить.


  • Можете ли вы опубликовать более подробную информацию об ошибке? Где эта функция? В UIViewController? 05.08.2018
  • Пожалуйста, прочитайте сообщение об ошибке внимательно, оно точно говорит вам, что не так (присутствует ... просмотр контроллера сам по себе< /и>). 05.08.2018

Ответы:


1

Текущий контроллер представления должен представить предупреждение, поэтому просто…

present(alert,animated: true)

скорее, чем

alert.present(alert,animated: true)

Обновить

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

DispatchQueue.main.async {
    showAlert(title: "My title", message: "My Message")
}

Примечание

Все имена переменных, параметров и функций в Swift должны начинаться со строчной буквы, например

func showAlert(title: String, message: String)

вместо

func ShowAlert(Title:String,Message:String)
05.08.2018
  • он не отображает окно предупреждения, если я заменяю alert.present(alert,animated: true) на present(alert,animated: true) 05.08.2018
  • func showAlert(title:String, message:String) => func showAlert(title: String, message: String) с пробелом после : должно быть еще лучше. 05.08.2018
  • Я использовал DispatchQueue.main.async {showAlert(title: My title, message: My Message)}, но теперь показывает другую ошибку: «Приложение пыталось представить контроллер модального представления на себе. Представляющий контроллер — ‹UIAlertController: 0x7fa80e0b6400›. 05.08.2018
  • Пожалуйста, прочитайте мой полный ответ. Вы должны сделать обе вещи. Представить от себя, и в основной очереди 05.08.2018
  • отлично, сработало. на самом деле это было self.present(alert,animated: true) 05.08.2018
  • на самом деле я новичок в IOS, поэтому и делаю глупости. кроме того, еще раз спасибо, брат 05.08.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование