Ошибка диалогового окна оповещения в Xcode 11.1? - PullRequest
0 голосов
/ 13 октября 2019

Я решил обновить XCode до версии 11.1 (11A1027) вчера, и я думаю, что либо обнаружил ошибку, либо изменился синтаксис Swift.

У меня почти пустой viewController с двумя кнопками, одна из которых закрывает ViewControllerа другой отображает предупреждение.

@IBAction func search_BTN(_ sender: Any) {
    //1. Create the alert controller.
    let alert = UIAlertController(title: "Some Title", message: "Enter a text", preferredStyle: .alert)

    //2. Add the text field. You can configure it however you need.
    alert.addTextField { (textField) in
        textField.text = "Some default text"
    }

    // 3. Grab the value from the text field, and print it when the user clicks OK.
    alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { [weak alert] (_) in
        let textField = alert?.textFields![0] // Force unwrapping because we know it exists.
        print("Text field: \(textField?.text)")
    }))

    // 4. Present the alert.
    self.present(alert, animated: true, completion: nil)
}

При удалении кода addTextField появится предупреждение * ТОЛЬКО . Иначе приложение зависает, и я вынужден закрыть его. То, что я думаю, происходит, когда либо отображается пустой диалог, либо программа застревает в цикле. Я думаю, что причина в том, что приложение не падает, а я не получаю сообщений об ошибках. Единственное, что я получаю, это:

XPC connection interrupted

Что, насколько мне известно, означает, что время ожидания приложения истекло.

То, что я пробовал

  • Другие контроллеры представления (есть та же проблема)
  • Другой проект XCode (Есть та же проблема)
  • Xcode 10 (Это сработало)
  • Очисткапроект

То, что я не устал

  • Физическое устройство iOS (просто симулятор)
  • Другой компьютер, использующий последнюю версию Xcode

Кто-нибудь может подтвердить эту ошибку? Кто-нибудь знает обходной путь к этой проблеме? Или есть другой способ отображения оповещения с текстовым полем без установки модулей (мне нравится использовать как можно больше сторонних кодов).

EDIT1 : Я думаю, что это могут быть просто текстовые поля в целом. Я устал обойти проблему, просто используя текстовое поле в контроллере представления, но я все еще получаю ту же проблему. Я также устал от очистки проекта и восстановления. То же самое случилосьВероятно, удалит и переустановит Xcode. Если это не сработает, возможно, мне придется попробовать установить бета-версию.

EDIT2 : У меня была сумасшедшая идея сделать что-то, что имеет смысл. Я обновил свою ОС до Каталины, и это решило проблему. Если кто-то знает, почему это произошло, мне было бы интересно узнать. Предполагая, что это связано с кэшированием некоторых типов.

1 Ответ

1 голос
/ 13 октября 2019

У меня недавно была похожая проблема, и, очевидно, это ошибка, подтвержденная Apple: https://forums.developer.apple.com/thread/122972

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

Снимите флажок с «Правка» -> «Автоматически синхронизировать картон»

Перезапустите симулятор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...