【问题标题】:Trying to find the cause of this crash试图找出这次崩溃的原因
【发布时间】:2016-01-14 07:01:14
【问题描述】:

我正在研究 crashlytics。按照堆栈跟踪并有他的错误:

HTTPManager.swift line 313
specialized HTTPManager.(createAuthenticationParameters in _F8C28254BDE35F2F2E746C55EB4303F3)() -> [String : AnyObject]

与:

Crashed: com.apple.main-thread
EXC_BREAKPOINT 0x000000010017c690

方法是这样的:

private func createAuthenticationParameters() -> Dictionary<String, AnyObject> {
    var parameters = [String:AnyObject]()
    if User.sharedInstance.facebookID != nil {
        parameters["facebook_id"] = User.sharedInstance.facebookID!
    } else if User.sharedInstance.email != nil {
        parameters["email"] = User.sharedInstance.email!
    }
    parameters["auth_token"] = User.sharedInstance.authToken!

    return parameters // LINE 313
}

什么可能导致它崩溃?我只是将值放入字典中。任何指针将不胜感激。谢谢

【问题讨论】:

  • 你需要使用 "if let" 而不是 obj != nil
  • 此文件第 313 行的代码行是什么。
  • @Avaan 编辑了我的问题。
  • @Atrash 抱歉我的问题有错误的代码。现在编辑它。它在返回线上崩溃。
  • 可能是它试图在第 311 行解开一个 nil 可选然后崩溃?然而,崩溃报告称崩溃发生在第 313 行...

标签: ios swift crashlytics


【解决方案1】:

我建议尝试像这样重写您的代码:

private func createAuthenticationParameters() -> [String: Any] {
    var parameters: [String: Any] = [:]
    if let facebookID = User.sharedInstance.facebookID {
        parameters["facebook_id"] = facebookID
    } else if let email = User.sharedInstance.email {
        parameters["email"] = email
    }

    if let token = User.sharedInstance.authToken {
        parameters["auth_token"] = token
    }

    return parameters // LINE 313
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多