使用Parse保存CLCircularRegion

时间:2015-04-12 18:07:11

标签: ios objective-c parse-platform

我正在使用Parse和geofencing处理应用。我有一个地理围栏对象,如下所示:

Geofence.h - >

@interface Geofence : PFObject<PFSubclassing>
+ (NSString *) parseClassName;
@property (nonatomic, retain) CLCircularRegion * region;

@end

Gefence.m - &gt;

#import "Geofence.h"
#import <Parse/PFObject+Subclass.h>

@implementation Geofence

+ (void) load {
    [self registerSubclass];
}

+ (NSString *)parseClassName {
    return @"Geofence";
}

@dynamic region;

@end

在我的AddGeofenceClass中,我通过调用我的私有方法setUpGeofence来设置地理围栏:

self.region = [self setUpGeofence:self.longitude.doubleValue:self.latitude.doubleValue];

正确设置了self.region,但是当我尝试使用Parse设置区域对象时:

[self.geofence setObject:self.region forKey:@"region"];

我收到错误:

由于未捕获的异常终止应用程序&#39; NSInvalidArgumentException&#39;,原因:&#39; PFObject值可能没有类:CLCircularRegion&#39;

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你不能在Parse中放置任何对象类型。如果我创建了一个名为&#34; MyClass,&#34;我不能说:

[self.parseObject setObject:instanceOfMyClass forKey:@"MyClass"];

Parse不知道如何处理它。我建议做的是使用以下方法在PFGeoPoint中保存中心点:

PFGeoPoint *point = [PFGeoPoint geoPointWithLatitude:yourRegionsCenterLatitude longitude:yourRegionsCenterLongitude];
[self.parseObject setObject:point forKey:@"CenterPoint"];

然后你可以在Parse中有另一个名为&#34; Radius&#34;你可以保存在另一个数字类型的列中,如下所示:

[self.parseObject setObject:[NSNumber numberWithFloat:regionRadiusAsFloat] forKey:@"Radius"];

然后您可以稍后在查询中检索它们,并使用中心和半径重建区域。