2016-07-25 1 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 } 
관련 문제