0
このアプリケーションを実行するとクラッシュするよりも、キャッチされない例外 'NSInvalidArgumentException'、reasonNSCFDictionaryの長さによってアプリケーションが終了するというエラーが表示されます:認識できないセレクタがインスタンス0x60000006df80 'ビルド中にエラーこのアプリケーションを使用していないことで天気を条件を見つけることを試みるが、私は、このアプリケーションを実行すると、それは認識されていないセレクタが問題0x60000006df80'.Soインスタンスに送信エラーがFUNCにある示しsearchBarSearchButtonClicked .I(_検索バー: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()
}
}