Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.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/linq/3.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 如何将PFGeoPoint转换为CLLocation_Ios_Objective C_Parse Platform_Cllocationmanager - Fatal编程技术网

Ios 如何将PFGeoPoint转换为CLLocation

Ios 如何将PFGeoPoint转换为CLLocation,ios,objective-c,parse-platform,cllocationmanager,Ios,Objective C,Parse Platform,Cllocationmanager,是否可以将带有Parse的PFGeoPoint转换为CLLocation 原因是我试图从PFGeoPoint获取地名,如下所示: CLGeocoder *geocoder; CLPlacemark *placemark; PFGeoPoint *point = [object objectForKey:@"location"]; [geocoder reverseGeocodeLocation:point compl

是否可以将带有Parse的PFGeoPoint转换为CLLocation

原因是我试图从PFGeoPoint获取地名,如下所示:

   CLGeocoder *geocoder;
    CLPlacemark *placemark;
     PFGeoPoint *point = [object objectForKey:@"location"];
                            [geocoder reverseGeocodeLocation:point completionHandler:^(NSArray *placemarks, NSError *error) {
                                NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
                                if (error == nil && [placemarks count] > 0)
                                {
                                    placemark = [placemarks lastObject];
                                    NSLog(@"%@", placemarks);

                                }
                            }];
我得到的错误显然是:

Incompatiable pointer types sending 'PFGeoPoint *' to parameter of type 'CLLocation *'

您需要使用
initWithLatitude:longitude:
latitude
PFGeoPoint
显式创建
CLLocation
实例。只有一种方便的方法可以从
CLLocation
创建
PFGeoPoint
,反之亦然。

正如Wain所说,没有一种方便的方法可以从
PFGeoPoint
转换为
CLLocation
,但是您可以使用以下方法创建自己的
PFGeoPoint

import Parse

extension PFGeoPoint {

    func location() -> CLLocation {
        return CLLocation(latitude: self.latitude, longitude: self.longitude)
    }
}
现在,您可以通过执行以下操作轻松返回CLLocation对象

let aLocation: CLLocation = yourGeoPointObject.location()

您始终可以获取PFGeoPoint,然后将其添加到CLLocationCoordinate2D,如下所示:

//get all PFObjects

let parseLocation = ParseObject["location"]

let location:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: parseLocation.latitude, longitude: parseLocation.longitude)
基于Justin Oroz的(见下面的答案): 另外一个好主意是在CLLocation端创建扩展,以便使用接收PFGeoPoint的便利init创建扩展:

extension CLLocation {
    convenience init(geoPoint: PFGeoPoint) {
        self.init(latitude: geoPoint.latitude, longitude: geoPoint.longitude)
    }
}