swift - 使用文本框然后 segue 给出无法识别的选择器错误/崩溃,我该如何解决这个问题?
问题描述
使用 Xcode 11.4.1
在我的 MainViewController 上,我有一个输入股票代码的文本框 (txtStockSymbol),然后我点击了一个搜索按钮……这可以正常工作。
我在 MainViewController 导航栏上有一个按钮 (btnSettings),可以将我带到 SettingsViewController,这可以正常工作。
当我单击文本框(txtStockSymbol)然后单击按钮(btnSettings)时,问题“仅”发生......它给了我以下错误并在去任何地方之前崩溃。
Thread1:Exception:"-[Final_Project_Beta.MainViewController txtStockSymbol:]:unrecognized selector sent to instance 0x7ffccff0a390
我只是不知道如何解决这个问题,有人有解决方案吗?
import UIKit
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet weak var txtStockSymbol: UITextField!
@IBOutlet weak var lblStockName: UILabel!
@IBOutlet weak var lblOpenPrice: UILabel!
@IBOutlet weak var lblHighPrice: UILabel!
@IBOutlet weak var lblLowPrice: UILabel!
@IBOutlet weak var lblCurrentPrice: UILabel!
@IBOutlet weak var lblPreviousPrice: UILabel!
// Calls API Function
@IBAction func btnStockSearch(_ sender: Any) {
makeRequest()
}
// Calls API Function
private func makeRequest() {
let stockSymbol = txtStockSymbol.text!
let url = URL(string: "https://api.lil.software/stocks?symbol=\(stockSymbol)")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
guard let responseData = data else { return }
do {
let stocks = try JSONDecoder().decode(ValueData.self, from: responseData)
print("Stocks: \(stocks)")
// Properties pulled from stocks to populate MainView Labels
DispatchQueue.main.async {
// Formatting to set all currency values to 2-decimal places.
let rOpen = (String(format: "%.2f", stocks.open))
let rHigh = (String(format: "%.2f", stocks.high))
let rLow = (String(format: "%.2f", stocks.low))
let rCurrent = (String(format: "%.2f", stocks.current))
let rPrevious = (String(format: "%.2f", stocks.previous_close))
// Uses stocks data to populate MainView labels
self.lblStockName.text = "Name: \(stocks.name)."
self.lblOpenPrice.text = "Open: $\(rOpen)"
self.lblHighPrice.text = "High: $\(rHigh)"
self.lblLowPrice.text = "Low: $\(rLow)"
self.lblCurrentPrice.text = "Current: $\(rCurrent)"
self.lblPreviousPrice.text = "Previous Close: $\(rPrevious)"
}
}
catch {
print("Error: Stock Symbol not found, try again")
}
}
task.resume()
}
struct ValueData: Codable {
var name: String
let open: Double
let high: Double
let low: Double
let current: Double
let previous_close: Double
}
}
解决方案
推荐阅读
- mongodb - 如何连接到 Kubernetes 上的 MongoDB 副本集
- github - Github 认证失败
- swift - AVCapturePhotoOutput capturePhotoWithSettings:delegate: No active and enabled video connection'
- python - Python Kivy 库添加小部件
- python - Python pyreverse 可以为函数生成 UML 图吗?
- javascript - 宽度不能再扩大并与 CSS 中的其他宽度一起调整
- php - 如何在不丢失插件数据的情况下通过 ZIP 文件更新 WordPress 插件?
- javascript - 在 react native 中使用 createMaterialTopTabNavigator 时无法导航到另一个页面
- java - 为 lambda 表达式中的异常生成函数接口并将它们抛出到方法的签名上
- vim - 如何使用 VimL 脚本向当前 Vim 缓冲区添加一些行?