Нить 0 рухнула - PullRequest
       64

Нить 0 рухнула

0 голосов
/ 06 февраля 2020

Я отправил свое приложение в магазин приложений, они сказали, что это просто sh, когда набираешь url и нажимаешь «Готово» с клавиатуры. Но мое реальное устройство, устройства и симулятор моих друзей-тестировщиков, которые мы тестировали на 13.3.1, работает нормально! Не удается найти, что проблемы здесь.

этот взломщик sh журнал от разработчика Apple:

enter image description here

мой код:

 //MARK:-- TEXTFIELD DELEGATE
  func textFieldShouldReturn(_ textField: UITextField) -> Bool {

      let detector = try! NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
      let matches = detector.matches(in: textField.text!, options: [], range: NSRange(location: 0, length: textField.text!.utf16.count))

      for match in matches {
          guard let range = Range(match.range, in: textField.text!) else { continue }
          let url = textField.text![range]
          print("return: " + url)

          let Turl = String(url)
           DispatchQueue.main.async {
                     self.tableView.reloadData()
                 }
      if Turl.isEmpty {
          self.name.becomeFirstResponder()
          return false
      }else{

        self.url.becomeFirstResponder()

        UserDefaults.standard.set(Turl, forKey: "URL")

        DispatchQueue.main.async {
                   self.tableView.reloadData()
               }

        textField.resignFirstResponder()

        dismiss(animated: true){
            NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)
        }


        //apped data to array and save to userDefault
        var saved = URLArray as! [String]
        var named = nameArray
        let PlaylistName = name.text!

        if !saved.contains("\(textField.text!)"){

            saved.append(Turl)
            named.append(PlaylistName)
            UserDefaults.standard.set(saved, forKey: "URLs")
            UserDefaults.standard.set(named, forKey: "name")
            print(named, saved)

            self.tableView.reloadData()


        }else{
            print("was saved")

            dismiss(animated: true, completion: nil)
          }
      }
  }

     if textField == name{
        self.name.resignFirstResponder()
        self.url.becomeFirstResponder()
      }

      self.tableView.reloadData()

      return true

  }

1 Ответ

3 голосов
/ 06 февраля 2020

Исключение имеет Код исключения = 1 (вторая строка в вашем исключении):

EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001

, что обычно результат значений принудительной развертки, которые nil.

Например, try! и textField.text!, или любая другая развернутая вами сила может привести к этому. Вместо этого используйте охранники и возвращайтесь из функции (возможно, с ошибкой), если они терпят неудачу. Например:

    guard let detector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue) else {
        // Do something if Failed
        return;
    }

Также вам будет намного легче отлаживать, если вы включите файлы символов в свою сборку.

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