2016-07-25 60 views
-2

“初始值设定条件结合必须有可选的类型,而不是字符串‘’。 我试图sender.stringValuesender.stringValue?但Xcode的东西它的滑稽一次。(属性上面的错误消息)“条件绑定的初始化程序必须具有可选类型,而不是'字符串'”,但在那种情况下还有其他什么?

 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

如果这不是可选的,解决方法就是不解开它,不要使用'guard let'。 – Moritz

回答

0

你只是想

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

guard !text.isEmpty else { return } 
相关问题