iOS应用程序崩溃与苹果测试

时间:2018-02-21 09:41:56

标签: ios swift crash itunesconnect

我提交了一个应用程序供审核,它与苹果测试人员发生了冲突。 然而,它在公司的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")
            }

        }

    }
}

1 个答案:

答案 0 :(得分:0)

根据您提供的信息,我猜测它是因为强制解包变量。 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!

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