需要象征崩溃日志EXC_CRASH(SIGABRT)

时间:2020-03-28 00:04:55

标签: ios swift iphone xcode crash-reports

我需要象征苹果崩溃日志

在XCode Simulator上所有受支持的设备上运行我的应用程序时,我没有发生任何崩溃,但是Apple Reviewer告诉我,我的应用程序在启动时崩溃了,如果有人可以象征该崩溃日志了,我可以将崩溃日志发送给我,以便我可以找到崩溃。 This is a link for crash-log.txt file

这是我的主要VC,如果它有助于查找崩溃

 @IBOutlet weak var aboutBarBtn: UIBarButtonItem!
    @IBOutlet weak var homeBarBtn: UIBarButtonItem!

    @IBAction func homeBarBtn(_ sender: UIBarButtonItem) {
        loadContent()

    }
    @IBOutlet weak var webView: WKWebView!

    private var failedAt: URL?

    private lazy var offlineImg: UIImageView = {
        let image = UIImageView(image: #imageLiteral(resourceName: "90713124_3084925348192795_4212473017332137984_n"))
        image.contentMode = .scaleAspectFit
        return image
    }()

    private lazy var offlineTitleLbl: UILabel = {
       let label = UILabel()
        label.text = "Opps!.."
        label.font = UIFont.boldSystemFont(ofSize: 18)
        label.textAlignment = .center
        return label
    }()

    private lazy var offlineMessageLbl: UILabel = {
        let label = UILabel()
        label.text = "We couldn't load the next page on this connection please try again"
        label.font = UIFont.systemFont(ofSize: 16)
        label.numberOfLines = 0
        label.textAlignment = .center
        return label
    }()

    private lazy var offlineTryAgainBtn: UIButton = {
        let button = UIButton()
        button.setTitle("Try Again", for: .normal)
        button.setTitleColor(.systemRed, for: .normal)
        button.layer.borderColor = UIColor.systemRed.cgColor
        button.layer.borderWidth = 1.0
        button.addTarget(self, action: #selector(self.onTryAgainBtnPressed(_:)), for: .touchUpInside)
        return button
    }()

   private lazy var offlineView: UIView = {
        let view = UIView()
        return UIView()
    }()

    override func viewDidLoad() {
        super.viewDidLoad()


        homeBarBtn.image = #imageLiteral(resourceName: "home")
        aboutBarBtn.image = #imageLiteral(resourceName: "info")
               let center = UNUserNotificationCenter.current()
                center.requestAuthorization(options: [.alert, .badge]) { (granted, error) in
                    if let e = error {
                        print ("Failed to authorize notification from user.\(e)")
                    }
                }
                let content = UNMutableNotificationContent()
                content.title = "مرحباً بك في الزاوية الخامسة"
                content.body = "أولي خطواتك لتحقيق أحلامك ريادة صناعة المستقبل"

                let date = Date(timeIntervalSinceNow: 5)
                let dateComponeent = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)

                let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponeent, repeats: false)

                let uuidString = UUID().uuidString
                let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger)

                center.add(request) { (error) in
                    if let e = error {
                        print(e)
                    }
                }

        webView.navigationDelegate = self
        start()
    }

    @objc func onTryAgainBtnPressed(_ sender: Any) {
        self.offlineView.removeFromSuperview()
        start()
    }

    private func start() {
        if let connection = try? Reachability().connection {
            switch connection {
            case .cellular, .wifi:
                loadContent()
            default:
                displayOfflineView()
            }
        } else {
            displayOfflineView()
        }
    }

    private func loadContent() {
        if let url = failedAt {
            webView.load(URLRequest(url: url))
        }else if let url = URL(string: "Link here") {
            webView.load(URLRequest(url: url))
        } else {
            displayOfflineView()
        }
    }

    private func displayOfflineView() {
        view.addSubview(offlineView)
        view.bringSubviewToFront(offlineView)
        offlineView.snp.makeConstraints { maker in
            maker.edges.equalTo(self.view.safeAreaLayoutGuide)
        }

        offlineView.addSubview(offlineImg)
        offlineImg.snp.makeConstraints { maker in
//            maker.top.equalToSuperview().offset(30)
            maker.size.equalTo(120)
            maker.centerX.equalToSuperview()
        }

        offlineView.addSubview(offlineTitleLbl)
        offlineTitleLbl.snp.makeConstraints { maker in
            maker.top.equalTo(offlineImg.snp.bottom).offset(20)
            maker.width.equalToSuperview().inset(40)
            maker.centerX.equalToSuperview()
        }

        offlineView.addSubview(offlineMessageLbl)
        offlineMessageLbl.snp.makeConstraints { maker in
            maker.top.equalTo(offlineTitleLbl.snp.bottom).offset(8)
            maker.width.equalToSuperview().inset(40)
            maker.centerY.equalToSuperview()
            maker.centerX.equalToSuperview()
        }

        offlineView.addSubview(offlineTryAgainBtn)
        offlineTryAgainBtn.snp.makeConstraints { maker in
            maker.top.equalTo(offlineMessageLbl.snp.bottom).offset(30)
            maker.leading.trailing.equalToSuperview().inset(30)
            maker.height.equalTo(50)
            maker.centerX.equalToSuperview()

        }

    }
}

extension ViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        HUD.show(.progress)
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        HUD.hide()
    }

    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        self.failedAt = webView.url
        HUD.flash(.labeledError(title: "Opps!..", subtitle: error.localizedDescription))
        displayOfflineView()
    }
}

1 个答案:

答案 0 :(得分:0)

通常,我们在调试模式下运行和测试我们的应用程序。有时,应用程序可以在调试模式下正常运行,但是在发布模式下会崩溃。这可能会导致框架,cocoapods 或我们用来构建应用的其他方法。

编辑方案,并将构建配置调试更改为 release 模式。然后在真实设备上运行您的应用程序。现在,如果您的应用程序出现问题,您将得到苹果遇到的错误。

edit sceme