2017-07-13 110 views
0

当我运行你的应用程序比它崩溃还显示错误终止应用程序由于未捕获的异常'NSInvalidArgumentException',reasonNSCFDictionary长度]:无法识别的选择器发送到实例0x60000006df80'.This应用程序是否条件。我试图通过使用这个应用程序找到更好的条件,而建设没有错误,但是当我运行这个应用程序,它显示错误无法识别的选择器发送到实例0x60000006df80'.So问题是在func searchBarSearchButtonClicked(_ searchBar:UISearchBar)中这条线。所以请帮助我,让我接下来的一部分。终止应用程序由于未捕获的异常

 @IBOutlet weak var searchBar: UISearchBar! 
     @IBOutlet weak var cityLbl: UILabel! 
     @IBOutlet weak var conditionLbl: UILabel! 
     @IBOutlet weak var degreeLbl: UILabel! 
     @IBOutlet weak var imgView: UIImageView! 
     var degree: Int! 
     var condition:String! 
     var imgURL:String! 
     var city:String! 
     var exists: Bool = true 
     override func viewDidLoad() { 
      super.viewDidLoad() 
      searchBar.delegate = self 
     } 

     func searchBarSearchButtonClicked (_ searchBar: UISearchBar) 
     { 
     let urlRequest = URLRequest(url: URL(string: "https://api.apixu.com/v1/current.json?key=04e2f1e6e7db4897aee91005171207&q=\(searchBar.text!.replacingOccurrences(of:" ", with: "%20"))")!) 
      let task = URLSession.shared.dataTask(with: urlRequest) { (data, responce, error) in 
       if error == nil{ 
        do{ 
         let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String: AnyObject] 
         if let current = json["current"] as? [String:AnyObject]{ 
          if let temp = current["temp_c"] as? Int{ 
          self.degree = temp 
          } 
          if let condition = current["condition"] as? [String:AnyObject]{ 
          self.condition = condition["text"] as! String 
          let icon = condition["icon"] as! String 
          self.imgURL = "http:\(icon)" 
          } 
         } 
         if let location = json["location"] as? [String:AnyObject]{ 
          self.city = location["name"] as! String 

         } 
         if let _ = json["error"] { 
          self.exists = false 
         } 
         DispatchQueue.main.async { 
          if self.exists{ 
           self.degreeLbl.isHidden = false 
           self.cityLbl.isHidden = false 
           self.conditionLbl.isHidden = false 
           self.degreeLbl.text = "\(self.degree.description)°" 
           self.cityLbl.text = self.city 
           self.conditionLbl.text = self.condition 
          }else{ 
            self.degreeLbl.isHidden = true 
            self.cityLbl.isHidden = true 
            self.conditionLbl.isHidden = true 
            self.cityLbl.text = "City does not Match" 
            self.exists = true 
            self.imgView.downloadImage(from: self.imgURL) 
          } 
         } 

        } catch let jsonError 
         { 
         print(jsonError.localizedDescription) 
         } 


        } 
       } 
       task.resume() 
     } 
    } 

回答

0

在info.plist中的主要故事板文件基本名称的名称应该是主要不是空

相关问题