2016-07-25 4 views
-2

」初期化子は、オプションの種類ではなく、 『文字列』を持っている必要があります。 私はその面白い再びsender.stringValuesender.stringValue?が、Xcodeの事を試してみました。あなたはちょうどたい"条件付きバインディングの初期化子にはオプションの型が必要ですが、 'string'ではなく、それ以外には何がありますか?結合条件のため

 extension MapViewController: NSSearchFieldDelegate { 
     override func searchFieldAction(sender: NSSearchField) { 
      // Note: use defer to dismiss the search controller even if the guard returns 
      defer { 
      } 

      guard let text = sender.stringValue.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
       where !text.isEmpty else { return } 

      let request = MKLocalSearchRequest() 
      request.naturalLanguageQuery = text 
      request.region = mapView.region 

      let search = MKLocalSearch(request: request) 
      search.startWithCompletionHandler { (response, error) in 
       guard let item = response?.mapItems.first else { return } 

       let annotation = item.placemark 
       self.mapView.addAnnotation(annotation) 
       self.mapView.showAnnotations([annotation], animated: true) 
       self.mapView.selectAnnotation(annotation, animated: true) 
      } 
     } 
+1

これがオプションでない場合、解決策は単純にアンラップしないことです。ガードレットは使用しないでください。 – Moritz

答えて

0

(上記のエラーメッセージを属性)

let text = sender.stringValue.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()) 

guard !text.isEmpty else { return } 
関連する問題