2014-07-17 2 views
1

Swift에서 MKLocalSearch API를 사용하려고합니다. 그러나 나는 그것을 작동시킬 수 없다. 오류가 발생했습니다Swift init()에서 MKLocalSearch가 작동하지 않습니다.

var search:MKLocalSearch = MKLocalSearch.init(request) 

설명서를 읽었으며 메서드 이름이 init (요청 :)임을 알았습니다. 내가 잘못했는지 잘 모르겠습니다. 조언을 부탁드립니다. :)

var request = MKLocalSearchRequest() 
     request.naturalLanguageQuery = searchTextFiled.text 
     println(searchTextFiled.text) 
     request.region = self.mapView.region //need to define region later 
     var search:MKLocalSearch = MKLocalSearch.init(request) 
     search.startWithCompletionHandler { 
      (response:MKLocalSearchResponse!, error:NSError!) in 
      if !error { 
       var placemarks:NSMutableArray = NSMutableArray() 
       for item in response.mapItems { 
        placemarks.addObject(placemarks) 
       } 
       self.mapView.removeAnnotations(self.mapView.annotations) 
       self.mapView.showAnnotations(placemarks, animated: true) 
      } else { 

      } 
     } 
+1

를 사용하는 것'잘못된 보인다. 'placemarks.addObject ((item as MKMapItem) .placemark)'를 시도하십시오. – Anna

+0

감사합니다. 그것은 저에게 많은 시간을 절약 할 수 있습니다! MKLocalSearch를 어떻게 초기화해야하는지 알고 있습니까? – RapTop

+1

Swift가 유형을 추론 할 수 있기 때문에 'var search : MKLocalSearch = MKLocalSearch (요청 : 요청)'또는'var search = MKLocalSearch (요청 : 요청) '이어야한다고 생각합니다. 두 번째 "요청"은 변수입니다. – Anna

답변

0

변경이 라인 :

var search:MKLocalSearch = MKLocalSearch.init(request) 

하려면 :이 경우에 포함 된 이름으로 혼란을 조금 만들어졌다

var search:MKLocalSearch = MKLocalSearch.init(request: request) 

- 첫 번째 부분, request:는 레이블입니다 이 함수는 호출 할 init 함수를 Swift에게 알려줍니다.이 경우 Objective-C initWithRequest: 메서드로 다시 매핑됩니다.

두 번째 부분 인 request은 사용자가 초기화 기능에 전달하는 변수 인 MKLocalSearchRequest입니다. 그래서 목표 - C와 동등한은 이것이다 : 나쁜 (접경에 쓰신 PDF here 아이북 스토어에서와 같은 가능한 애플의 스위프트 프로그래밍 언어 책에서 "초기화"라는 제목의 장 전체가,있다

MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request]; 

끔찍한) PDF 형식으로.

+0

귀하의 이름을 변경 한 후에도 "예상 멤버 이름 또는 형식 이름 뒤에 생성자 호출"오류가 발생합니다. – RapTop

0

init의 구문이 올바르지 않습니다. 그들은 스위프트에 의해 암시하고, 그래서 당신은 길,`placemarks.addObject (장소 표시)에 의해

var x = MKLocalSearch(request: request) 

하지

var x = MKLocalSearch.init(request) 
관련 문제