Objective c RestKit 0.20:RestKit对象映射使属性映射加倍
我正在使用RESTKit0.20,在使用带点(.)的规范符号时检测到一种奇怪的映射行为。如果您能解释一种处理对象映射的简单方法,从我在IOS上作为NSManagedObject实现的扁平对象到服务器端的对象关系,我将非常高兴 映射几乎正确,但从我的角度来看,geopoint.lat和geopoint.lon作为额外字段的映射是错误的,并在服务器上引发异常(无法识别的属性异常) 对象映射:Objective c RestKit 0.20:RestKit对象映射使属性映射加倍,objective-c,json,restkit,Objective C,Json,Restkit,我正在使用RESTKit0.20,在使用带点(.)的规范符号时检测到一种奇怪的映射行为。如果您能解释一种处理对象映射的简单方法,从我在IOS上作为NSManagedObject实现的扁平对象到服务器端的对象关系,我将非常高兴 映射几乎正确,但从我的角度来看,geopoint.lat和geopoint.lon作为额外字段的映射是错误的,并在服务器上引发异常(无法识别的属性异常) 对象映射: [mapping addAttributeMappingsFromDictionary:@{ @"geop
[mapping addAttributeMappingsFromDictionary:@{
@"geopoint.lat": @"latitude",
@"geopoint.lon": @"longitude",
@"countrycode": @"countryId",
@"county": @"county",
@"postcode": @"postalcode",
@"city": @"city",
@"street": @"street",
@"housenumber": @"housenumber"
}];
有效结果(显示为日志输出)
我也遇到过类似的情况,我可以看到两种解决方案: 1) 为具有lat和lon特性的地质点创建新类。然后将
地质点
作为属性添加到对象的类中。从字典中删除两个映射(geopoint.lat和geopoint.lon),并添加从关键路径“geopoint”到“geopoint”的关系。从那时起,您可以通过object.geopoint.lat
和object.geopoint.lon
访问纬度和经度
2) 通过以下方式删除请求的映射:
RKEntityMapping *addressRequestMapping = [mapping inverseMapping];
[addressRequestMapping removePropertyMapping:[addressRequestMapping propertyMappingsBySourceKeyPath][@"geopoint.lat"]];
[addressRequestMapping removePropertyMapping:[addressRequestMapping propertyMappingsBySourceKeyPath][@"geopoint.lon"]];
[manager addRequestDescriptorsFromArray:@[
[RKRequestDescriptor addressRequestMapping objectClass:[Address class] rootKeyPath:nil]
]];
选项1允许您修改坐标并将数据放入服务器,而选项2则不允许。谢谢。我也看不到任何替代方案。同时,我采纳了我的方案1。现在我还有一个类和sql表要维护。
RKEntityMapping *addressRequestMapping = [mapping inverseMapping];
[addressRequestMapping removePropertyMapping:[addressRequestMapping propertyMappingsBySourceKeyPath][@"geopoint.lat"]];
[addressRequestMapping removePropertyMapping:[addressRequestMapping propertyMappingsBySourceKeyPath][@"geopoint.lon"]];
[manager addRequestDescriptorsFromArray:@[
[RKRequestDescriptor addressRequestMapping objectClass:[Address class] rootKeyPath:nil]
]];