【问题标题】:iOS app crashes with apple testiOS 应用程序因 Apple 测试而崩溃
【发布时间】:2018-02-21 09:41:55
【问题描述】:

我提交了一个应用程序以供审核,但它在 Apple 测试人员中崩溃了。 但是它在公司的 iPhone 上运行完美,但在 iPad 上崩溃。
Crashlog

*注意我的应用正在从 SIM 卡中读取位置

func renderFlag(){

    let country = Utility.getObjectFromUserDefaults(fromKey: "userCountry") as? Country
    if country?.countryID != "" && country?.countryID != nil
    {
        print("step1")
        Utility.downloadImageForButton(imageURL: (country?.countryFlag)!, button: self.countryBtn)
    }
    else
    {
        print("step2")
        let networkInfo = CTTelephonyNetworkInfo();
        let isoCountryCode = networkInfo.subscriberCellularProvider?.isoCountryCode
        var noCountries = 0
        print("step3")
        for c in self.countries
        {
            noCountries += 1
            print(c.toJSON())
            var countryISO = c.iso_code!
            var phoneCountryCode = networkInfo.subscriberCellularProvider?.isoCountryCode!

            //if(countryISO == nil ){ countryISO =  "jo"} //for chosing JO by default
            //if(phoneCountryCode == nil ){ phoneCountryCode = "jo"} //for chosing JO by default

            print("step3.5" + "\(countryISO)" + "\(phoneCountryCode)")
           // print("phoneCountryCode \(phoneCountryCode!)")
             print("step4")
            if phoneCountryCode == countryISO || phoneCountryCode == countryISO.capitalized
            {

                print("phoneCountryCode \(phoneCountryCode!) countryISO \(countryISO)")
                 print("step5")
                let imagePath = c.countryFlag!
                Utility.downloadImageForButton(imageURL: imagePath, button: self.countryBtn)
                Utility.saveObjectInUserDefaults(objectValue: c, forKey: "userCountry")
            }

        }

    }
}

【问题讨论】:

  • 发布包含您的应用程序信息的堆栈跟踪不太聪明:) 只是说'
  • @DominikBucher 是的,谢谢,但我看不懂,所以我需要有人帮助我,谢谢你的建议

标签: ios swift crash app-store-connect


【解决方案1】:

根据您提供的信息,我猜这是因为强制解包变量。 Apple 的审核团队可能正在使用没有 sim 卡的 iPad 或根本没有蜂窝功能的 iPad(或两者兼有)。

我的猜测是它在这一行崩溃(纯粹是推测,因为您之前还强制解包变量):

var phoneCountryCode = networkInfo.subscriberCellularProvider?.isoCountryCode!

您应该使用?? 运算符提供默认值。

还可以使用 ?? 运算符来消除这些展开:

Utility.downloadImageForButton(imageURL: (country?.countryFlag)!, button: self.countryBtn)

var countryISO = c.iso_code!

print("phoneCountryCode \(phoneCountryCode!) countryISO \(countryISO)")

let imagePath = c.countryFlag!

当您使用良好的替代方案进行编程时,应用程序不应再崩溃,也可能不会像您希望的那样工作,但这就是您必须选择正确的默认值的原因。

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 2013-07-16
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2014-04-02
    • 1970-01-01
    相关资源
    最近更新 更多