2017-06-20 7 views
1

Swiftを使用してiOSアプリケーションを作成しようとしています.UISearchbarを使用して検索機能を実装する必要があります。ストア名を取り込み、データベース内でそのストア名を検索してストア名の配列を返します。以下は私にいくつかのエラーを与えているコードの部分です。私は密接にhttp://swiftdeveloperblog.com/case-insensitive-search-with-swift-php-and-mysql/searchBar.resignFirstResponder()はゼロ値を返す

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) 
{ 
    if(searchBar.text!.isEmpty) 
    { 
     return 
    } 


    doSearch(searchWord: searchBar.text!) 

} 
func doSearch(searchWord: String){ 

    mysearchBar.resignFirstResponder() 

    let myURL = NSURL(string: "http://localhost:8080/searchStore.php") 

    var request = URLRequest(url:myURL! as URL) 
    request.httpMethod = "POST" 

    let postString = "name=\(searchWord)" 
    request.httpBody = postString.data(using: String.Encoding.utf8) 

    let task = URLSession.shared.dataTask(with: request, completionHandler:{ (data: Data?, response: URLResponse!, error: Error!) -> Void in 

     DispatchQueue.main.async() { 

      if error != nil{ 
       self.displayAlertMessage(userMessage: error.localizedDescription) 
       return 
      } 
      do{ 
       var _: Error? 
       //STOPPED HERE AS OF NOW 
       let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary 


       self.results.removeAll(keepingCapacity: false) 
       self.tableView.reloadData() 

       if let parseJSON = json{ 

        if let stores = parseJSON["stores"] as? [AnyObject]{ 

         for storeOjb in stores{ 
          let name = (storeOjb["name"] as! String) 
          self.results.append(name) 
         } 

         self.tableView.reloadData() 

        }else if(parseJSON["message"] != nil){ 

         let errorMessage = parseJSON["message"] as? String 
         if(errorMessage != nil){ 
          self.displayAlertMessage(userMessage: errorMessage!) 

         } 
        } 
       } 
      } catch { 
       print(error) 
      } 
     } 

    }) 

    task.resume() 
} 

私は)(2エラー最初のものはmysearchBar.resignFirstResponderに起因してもらうこのウェブサイトに従いました。私はmysearchBar.resignFirstResponder()を削除すると、私はUPDATE

Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo= 
{NSDebugDescription=No value.} 

取得アプリが終了し、私は2番目の誤差がある

"fatal error: unexpectedly found nil while unwrapping an Optional value" 

を得続ける: が、私はこの行を入力することにより、第二の問題を修正し

request.addValue("application/json", forHTTPHeaderField: "Content-Type") 

しかし、私のpostString変数が問題に直面しているようです

breakpoint check photo

答えて

0

行番号をクリックしてプログラムを実行すると、エラーが発生している行にブレークポイントを設定する必要があります。左下のデバッガー・ペイン・ウィンドウを使用してnil値を探します。 debugger pane

これは、どのような値がnilであるかを知るのに役立ちます。また、どの変数がnilであるかがわかっている場合は、教えてください。

+0

mysearchBarがnilと思われます。 –

+0

func doSearch(searchWord:String)にfunc doSearch(searchWord:String、searchbar:UIsearchbar)のような別の引数を渡してから、他の関数で引き続きdoSearch(searchWord:searchBar.text!、searchbar:searchbar)に検索バーを追加します。 – Mack

+0

君は!これは最初の問題を解決しました。しかし、今私はpostStringの別の問題に直面しています。 –

関連する問題