我正在使用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;
有谁知道如何解决这个问题?
答案 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"];
然后您可以稍后在查询中检索它们,并使用中心和半径重建区域。