错误值可选(错误域= kCLErrorDomain代码= 8“(空)”)

时间:2019-04-26 07:00:30

标签: ios swift mapkit

当用户键入在mapkit中显示的位置时,我正在使用mapkit来显示位置(用于搜索位置)。实施带有自动填充位置的自定义搜索,所有功能都可以正常运行。但是当我单击tableview中的某些位置名称时,它显示

错误域= kCLErrorDomain代码= 8“(空)”。

enter image description here
]

        var searchCompleter = MKLocalSearchCompleter()
        var searchResults = [MKLocalSearchCompletion]()


     func completerDidUpdateResults(_ completer: MKLocalSearchCompleter) {
            searchResults = completer.results
            for searchresult in searchResults {
                print("titlevalues",searchresult.title)
            }
            if (searchResults.count != 0) {
                self.searchTableView.isHidden = false
            } else {
                self.searchTableView.isHidden = true
            }
            self.searchTableView.reloadData()
        }


     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell: SelectLocationTableCell = tableView.dequeueReusableCell(withIdentifier: "SelectLocationTableCell") as! SelectLocationTableCell
            let searchresult = searchResults[indexPath.row]
            cell.titleLabel.text = searchresult.title
            cell.descriptionLabel.text = searchresult.subtitle
            return cell
        }
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            let searchresult = searchResults[indexPath.row]
            self.setSelectMarkinAction(searchResult: searchresult)
            self.searchTableView.isHidden = false
            self.doneButton.isHidden = false
        }

        func getCoordinate( addressString : String,
                            completionHandler: @escaping(CLLocationCoordinate2D, NSError?) -> Void ) {
            let geocoder = CLGeocoder()
            geocoder.geocodeAddressString(addressString) { (placemarks, error) in
                if error == nil {
                    if let placemark = placemarks?[0] {
                        let location = placemark.location!
                        completionHandler(location.coordinate, nil)
                        return
                    }
                }
                completionHandler(kCLLocationCoordinate2DInvalid, error as NSError?)
            }
        }

        func setSelectMarkinAction(searchResult: MKLocalSearchCompletion) {
            print("location address tile",searchResult.title)
            getCoordinate(addressString: searchResult.title) { (location, error) in
                if (error == nil) {
                    self.setMarkLocationInMap(searchResult: searchResult, location: location)
                    print("locationdata",location)
                } else {
                    print("error values",error as Any)
                }
            }
        }


This error am getting some of locations

location address tile Reva University
error values Optional(Error Domain=kCLErrorDomain Code=8 "(null)")

当我选择任何位置时,我必须在mapkit上显示位置

1 个答案:

答案 0 :(得分:0)

看看这个答案, kCLErrorDomain Code=8 "The operation couldn’t be completed.

有时,地址中的某些元素确实涉及建筑物中位置的精度,这会干扰没有该精度的实际位置的匹配。

例如:

13 BOULEVARD DE LA LIBERTE, 35000 RENNES, FR 未被识别

并导致code=8错误,但是如果使用France而不是FR,则会获得预期的结果。

13 BOULEVARD DE LA LIBERTE, 35000 RENNES, France 被识别