首页 > 解决方案 > 使用文本框然后 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
    }
    
}

标签: swiftxcodeuikit

解决方案


推荐阅读