Ios 当用testflight点击按钮时,应用程序崩溃
我正在用Swift 4.2开发应用程序,我遇到了iOS应用程序崩溃的问题。 对我来说,一切都很好,但对其他安装了testflight应用程序的人来说却不起作用。 错误是这样的。 下面是添加处理程序的代码Ios 当用testflight点击按钮时,应用程序崩溃,ios,iphone,swift,Ios,Iphone,Swift,我正在用Swift 4.2开发应用程序,我遇到了iOS应用程序崩溃的问题。 对我来说,一切都很好,但对其他安装了testflight应用程序的人来说却不起作用。 错误是这样的。 下面是添加处理程序的代码 cell.btnBooknow.addTarget(self, action: #selector(pressBookNowButton(button:)), for: .touchUpInside) 这是一个按钮点击处理程序 @objc func pressBookNowButton(bu
cell.btnBooknow.addTarget(self, action: #selector(pressBookNowButton(button:)), for: .touchUpInside)
这是一个按钮点击处理程序
@objc func pressBookNowButton(button: UIButton) {
guard let tagValue = self.arrListingBagHandler.object(at: button.tag) else {
return
}
print(self.artworks)
print(self.onlineStatus)
print(self.arrSearchAddressResult)
print(tagValue)
let valueStatus = tagValue["IsOnline"] as! String
let availability = tagValue["AvailabilityDays"] as! String
let arr = Array(availableDays)
print(valueStatus)
print(arr)
let arrAvailability = Array(availability)
print(arrAvailability)
let arr1 = availability.components(separatedBy: ",")
print(arr1)
let day = (presentDay!-1)
let today = "\(day)"
print(today)
if arr1.contains(today)
{
availableToday = true
}
else
{
availableToday = false
}
if valueStatus == "1" && availableToday == true
{
let obj = self.storyboard?.instantiateViewController(withIdentifier: "bookingId") as! BookingViewController
obj.dicBagHanlderDetail = tagValue
self.navigationController?.pushViewController(obj, animated: true)
}
else
{
let alert = UIAlertController(title: "Alert!", message: "You can't make booking because store is currently closed.", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .cancel) { (actoin) in
}
alert.addAction(okAction)
self.present(alert, animated: true, completion: nil)
}
}
有人能帮我吗?
谢谢。正如其他人所建议的任何
代码>是一个潜在的崩溃。尝试用保护或默认值替换它。例如,您可以更改:
let valueStatus = tagValue["IsOnline"] as! String
let availability = tagValue["AvailabilityDays"] as! String
要使用默认值创建解决方案,请执行以下操作:
let valueStatus = tagValue["IsOnline"] as? String ?? "1"
let availability = tagValue["AvailabilityDays"] as? String ?? "5"
或者更好的防护,例如,在数据不可用时显示警报:
guard let valueStatus = tagValue["IsOnline"] as? String,
let availability = tagValue["AvailabilityDays"] as? String else {
// Display alert in case of unavailable data (or simply return)
let alert = UIAlertController(title: "Alert!", message: "You can't make booking because store is currently closed.", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .cancel) { _ in }
alert.addAction(okAction)
self.present(alert, animated: true, completion: nil)
return
}
// Continue as expected here...
正如其他人所建议的任何代码>是一个潜在的崩溃。尝试用保护或默认值替换它。例如,您可以更改:
let valueStatus = tagValue["IsOnline"] as! String
let availability = tagValue["AvailabilityDays"] as! String
要使用默认值创建解决方案,请执行以下操作:
let valueStatus = tagValue["IsOnline"] as? String ?? "1"
let availability = tagValue["AvailabilityDays"] as? String ?? "5"
或者更好的防护,例如,在数据不可用时显示警报:
guard let valueStatus = tagValue["IsOnline"] as? String,
let availability = tagValue["AvailabilityDays"] as? String else {
// Display alert in case of unavailable data (or simply return)
let alert = UIAlertController(title: "Alert!", message: "You can't make booking because store is currently closed.", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .cancel) { _ in }
alert.addAction(okAction)
self.present(alert, animated: true, completion: nil)
return
}
// Continue as expected here...
请使用下面的函数并解决问题。我认为这是可能的,因为强制转换字符串和int值
@objc func pressBookNowButton(button: UIButton) {
guard let tagValue = self.arrListingBagHandler.object(at: button.tag) else {
return
}
let valueStatus = tagValue["IsOnline"] as? String ?? ""
let availability = tagValue["AvailabilityDays"] as? String ?? ""
let arr = Array(availableDays)
let arrAvailability = Array(availability)
let arr1 = availability.components(separatedBy: ",")
let value : Int = Int(presentDay) ?? 0
let day = (value-1)
let today = "\(day)"
if arr1.contains(today)
{
availableToday = true
}
else
{
availableToday = false
}
if valueStatus == "1" && availableToday == true
{
let obj = self.storyboard?.instantiateViewController(withIdentifier: "bookingId") as! BookingViewController
obj.dicBagHanlderDetail = tagValue
self.navigationController?.pushViewController(obj, animated: true)
}
else
{
let alert = UIAlertController(title: "Alert!", message: "You can't make booking because store is currently closed.", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .cancel) { (actoin) in
}
alert.addAction(okAction)
self.present(alert, animated: true, completion: nil)
}
}
请使用下面的函数并解决问题。我认为这是可能的,因为强制转换字符串和int值
@objc func pressBookNowButton(button: UIButton) {
guard let tagValue = self.arrListingBagHandler.object(at: button.tag) else {
return
}
let valueStatus = tagValue["IsOnline"] as? String ?? ""
let availability = tagValue["AvailabilityDays"] as? String ?? ""
let arr = Array(availableDays)
let arrAvailability = Array(availability)
let arr1 = availability.components(separatedBy: ",")
let value : Int = Int(presentDay) ?? 0
let day = (value-1)
let today = "\(day)"
if arr1.contains(today)
{
availableToday = true
}
else
{
availableToday = false
}
if valueStatus == "1" && availableToday == true
{
let obj = self.storyboard?.instantiateViewController(withIdentifier: "bookingId") as! BookingViewController
obj.dicBagHanlderDetail = tagValue
self.navigationController?.pushViewController(obj, animated: true)
}
else
{
let alert = UIAlertController(title: "Alert!", message: "You can't make booking because store is currently closed.", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .cancel) { (actoin) in
}
alert.addAction(okAction)
self.present(alert, animated: true, completion: nil)
}
}
共享该方法的代码可能会有所帮助。另外,你可以尝试在你的手机上安装发布版本。是的,对我来说它工作正常,但在客户端的手机上,它崩溃了。它在iOS 12.1 iPhone 6 Plus上崩溃了。你能在这个配置中试试吗?另外,没有代码我们也猜不出有什么问题。@ZhengGeChe在第一行您试图强制转换到[string:Any]
请使用guard let
复制粘贴代码,而不是代码的屏幕截图。任何对的使用代码>是崩溃的潜在原因。使用如果let
或保护let
,不要强制展开。另外,如果您自己通过TestFlight安装它,您能重现崩溃吗?共享该方法的代码可能会有所帮助。另外,你可以尝试在你的手机上安装发布版本。是的,对我来说它工作正常,但在客户端的手机上,它崩溃了。它在iOS 12.1 iPhone 6 Plus上崩溃了。你能在这个配置中试试吗?另外,没有代码我们也猜不出有什么问题。@ZhengGeChe在第一行您试图强制转换到[string:Any]
请使用guard let
复制粘贴代码,而不是代码的屏幕截图。任何对的使用代码>是崩溃的潜在原因。使用如果let
或保护let
,不要强制展开。另外,如果你自己通过TestFlight安装它,你能重现崩溃吗?是的,这会起作用,但会导致错误的行为,这会导致用户错误地预订。我认为崩溃的发生会导致数据返回nil
,因此我认为如果他能够调试为什么返回nil
,可能是他从单元格传递标记的方式,这会很好。是的,这会起作用,但会导致错误行为,从而导致用户错误地预订。我认为崩溃的发生会导致数据返回nil
,因此我认为如果他能够调试为什么返回nil
,可能是他从单元格传递标记的方式,那就好了。