访问MKLocalSearchResponse项目(swift)

当我做println(localSearchResponse) ,我得到一个MapItem对象,其中包含了大量关于位置的细节。 在这个例子中,它的UCSD。 这里是我的日志中显示的输出。

 <MKLocalSearchResponse: 0x1c53d640> { boundingRegion = "<center:+32.87514836, -117.23958822 span:+0.00725621, +0.00825332>"; mapItems = ( "<MKMapItem: 0x1c538090> {\n isCurrentLocation = 0;\n name = \"University of California, San Diego\";\n phoneNumber = \"+18585342230\";\n placemark = \"University of California, San Diego, 9500 Gilman Dr, La Jolla, CA 92093-5004, United States @ <+32.87529400,-117.23961000> +/- 0.00m, region CLCircularRegion (identifier:'<+32.87514837,-117.23958825> radius 557.57', center:<+32.87514837,-117.23958825>, radius:557.57m)\";\n url = \"http://www.ucsd.edu\";\n}" ); } 

注意它是如何输出placemark = University of California...并有地址? 我如何获得这个值,并将其存储到一个variables? 这是我的代码:

 localSearchRequest = MKLocalSearchRequest() localSearchRequest.naturalLanguageQuery = addressTextField.text localSearch = MKLocalSearch(request: localSearchRequest) localSearch.startWithCompletionHandler { (localSearchResponse, error) -> Void in if localSearchResponse == nil{ var alert = UIAlertView(title: nil, message: "Place not found", delegate: self, cancelButtonTitle: "Try again") alert.show() return } //prints the MKLocalSearchResponse with name, phoneNumber, placemark println(localSearchResponse) //Get latitude and longitude var newRecordLat = localSearchResponse.boundingRegion.center.latitude var newRecordLong = localSearchResponse.boundingRegion.center.longitude //How do I get the address, which is "placemark" in the MKLocalSearchResponse? var newRecordAddress = localSearchResponse.mapItems...??? //store values to Parse self.latToParse = newRecordLat self.longToParse = newRecordLong } 

这是MKSearchResponse的文档

这里是MKMapItem的文档

答案是:

 var newRecordAddress = (localSearchResponse.mapItems[0] as! MKMapItem).placemark 

该对象包含您需要的所有信息。 检查它在演示项目

仅地址:

 var newRecordAddress = (localSearchResponse.mapItems[0] as! MKMapItem).placemark let addressOnly = newRecordAddress.name + ", " + newRecordAddress.title 

newRecordAddress.name是地方的名字newRecordAddress.title是你需要的地方的地址

由于mapItems是一个数组,因此您需要首先调用以访问该数组的第一个元素。 这将返回一个MKMapItem ,所以你可以得到这个代码的地标属性:

 localSearchResponse.mapItems.first.placemark