Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios geocodePostalAddress-从邮政编码获取地址_Ios_Swift_Core Location - Fatal编程技术网

Ios geocodePostalAddress-从邮政编码获取地址

Ios geocodePostalAddress-从邮政编码获取地址,ios,swift,core-location,Ios,Swift,Core Location,我正试图从邮政编码中获取地址,但得到的是错误信息,并且没有位置标记。设备似乎找不到位置。为什么会这样 区域设置不重要,我尝试了带和不带,结果是一样的 let geocoder = CLGeocoder() let postalAddress = CNMutablePostalAddress() postalAddress.postalCode = zipCode geocoder.geocodePostalAddress(postalAddress, preferredLocale: Loc

我正试图从邮政编码中获取地址,但得到的是错误信息,并且没有位置标记。设备似乎找不到位置。为什么会这样

区域设置不重要,我尝试了带和不带,结果是一样的

let geocoder = CLGeocoder()

let postalAddress = CNMutablePostalAddress()
postalAddress.postalCode = zipCode

geocoder.geocodePostalAddress(postalAddress, preferredLocale: Locale(identifier: "en_US")) { (placemarks, err) in
        if let placemark = placemarks?[0] {
            completionHandler(placemark)
            return
        }
        completionHandler(nil)
}

我猜你的测试程序或设备有问题,因为我无法重现这个问题。我没有完成处理程序,因此我将代码更改为:

    let geocoder = CLGeocoder()
    let postalAddress = CNMutablePostalAddress()
    postalAddress.postalCode = "93023"
    geocoder.geocodePostalAddress(postalAddress, preferredLocale: Locale(identifier: "en_US")) { (placemarks, err) in
            if let placemark = placemarks?[0] {
                print(placemark)
                return
            }
            print(err)
    }
我得到

93023, Ojai, CA  93023, United States...

这是正确的。也许你一直在敲打地理编码器所以你被掐死了?或者你的设备设置不好?或者它可能是更微妙的东西。

CLGeocoder也适用于我,但如果它不适用于您,请尝试以下MKLocalSearch游乐场:

import UIKit
import MapKit

let searchRequest = MKLocalSearch.Request()
searchRequest.naturalLanguageQuery = "93023"
let search = MKLocalSearch(request: searchRequest)
search.start { response, error in
    guard let response = response else {
        print(error?.localizedDescription ?? "This should be impossible")
        return
    }
  print(response.mapItems.first?.placemark.title ?? "No Placemarks")
}
输出:

Ojai, CA  93023, United States

也许邮政编码太模糊了?尝试了这个
postalAddress.isoCountryCode=“US”
,但请改为sameTry geocodeAddressString。@matt我尝试了,但结果相同,只是注意到它在模拟器上工作,但在设备上没有。仍然在发现这个问题。哇,真的很有趣,谢谢你的实验。设备是否在进行地理编码?奇怪。是的,我想我的设备有问题。我会在找到东西后跟进。你在美国吗?也许有一些我们不知道的规则。它们对我也适用——在设备上、模拟器上,还有(令人惊讶的)在操场上。我想您使用的是相同的zip-on设备和模拟器?是的,但可能设备的工作方式不同。这才是最重要的。
Ojai, CA  93023, United States