내가 틀렸어 야합니다 - 다음 코드를 변경했지만 여전히 오류가 발생합니다. 나는 분명히 뭔가 잘못 이해했다. 어떤 도움에 감사드립니다.Swift3에서 위치 검색을위한 완료 핸들러
func performSearch() {
mapView.delegate = self
matchingItems.removeAll()
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchText.text
request.region = mapView.region
let search = MKLocalSearch(request: request)
search.start(completionHandler: ({(response: MKLocalSearchResponse?,error: NSError?) in
if error != nil {
return
}
if response!.mapItems.count == 0 {
self.resultOfSearch.text = ("No matches found")
}else{
self.found = response!.mapItems
if let items = response?.mapItems, items.count > 0 {
while self.n < 3 && self.n < response!.mapItems.count { self.locationsRet[(response!.mapItems[self.n].name!)] = self.n; self.n = self.n + 1}
self.n = 0
}else{
self.alert2("NOLOC")
}
self.alert3(self.locationsRet, found: self.found)
}
} as? MKLocalSearchCompletionHandler)!)
}
그래도 오류가 발생합니다. 내가 잘못 했습니까?
이 코드는 스위프트 2에서 잘 작동하지만, 충돌 스위프트 3.
func performSearch() {
mapView.delegate = self
matchingItems.removeAll()
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchText.text
request.region = mapView.region
let search = MKLocalSearch(request: request)
search.start(completionHandler: ({(response: MKLocalSearchResponse?,error: NSError?) in
if error != nil {
//self.resultOfSearch.text = ("Error occured in search:\(error!.localizedDescription)")
} else if response!.mapItems.count == 0 {
self.resultOfSearch.text = ("No matches found")
// }else if response!.mapItems.count > 1 {
}else{
self.found = response!.mapItems
for _ in response!.mapItems {
if response!.mapItems.count > 0 {
while self.n < 3 && self.n < response!.mapItems.count { self.locationsRet[(response!.mapItems[self.n].name!)] = self.n; self.n = self.n + 1}
self.n = 0
}else{
self.alert2("NOLOC")
}
}
self.alert3(self.locationsRet, found: self.found)
}
} as? MKLocalSearchCompletionHandler)!)
}
이 코드는 지금이 오류를 제공
; 이 방법으로 같은 MKLocalSearch
에 시작 메소드를 호출 할 필요가 있으므로
function signature specialization <preserving fragile attribute, Arg[1] = [Closure Propagated : reabstraction thunk helper from @callee_owned (@unowned Swift.UnsafeBufferPointer<Swift.UInt8>) ->() to @callee_owned (@unowned Swift.UnsafeBufferPointer<Swift.UInt8>) -> (@out()), Argument Types : [@callee_owned (@unowned Swift.UnsafeBufferPointer<Swift.UInt8>) ->()]> of generic specialization <preserving fragile attribute,()> of Swift.StaticString.withUTF8Buffer <A> ((Swift.UnsafeBufferPointer<Swift.UInt8>) -> A) -> A
-> 0x5bf2e0 <+124>: trap
내가 처음으로} 제거 후 첫 번째 줄을 이해하지 않고 완벽하게 작동하지? MKLocalSearchCompletionHandler)!) - 이제 이해하고 감사합니다. – Jeremy
환영 메이트 :) –