首页 > 解决方案 > 线程 0 崩溃

问题描述

我将我的应用程序提交到应用商店,他们说当输入 url 并从键盘按“完成”时它会崩溃,但是我的真实设备、我的测试人员朋友设备和我们在 13.3.1 上测试的模拟器工作正常!无法在这里找到问题所在。

这个来自苹果开发者的崩溃日志:

在此处输入图像描述

我的代码:

 //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

  }

标签: swiftuitextfieldcrash-log

解决方案


异常具有异常代码= 1(异常中的第二行):

EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001

通常是强制展开值为nil.

例如try!and textField.text!,或您拥有的任何其他力量展开都可能导致它。相反,如果失败,请使用警卫并从函数返回(可能有错误)。例如:

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

此外,如果您在构建中包含符号文件,则调试起来会容易得多。


推荐阅读