我提交了一个应用程序供审核,它与苹果测试人员发生了冲突。 然而,它在公司的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")
}
}
}
}
答案 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!
当您使用好的替代方案编程时,应用程序不应再崩溃,可能也不会像您希望的那样工作,但这就是您必须选择正确的默认值的原因。