我使用的是RestKit 0.20,在使用带点(.)的规范表示法时,检测到一个奇怪的映射行为。如果你能解释一种简单的方法来处理从扁平化对象到服务器端的对象关系的映射,我会很高兴。
RKObjectMapping:
[mapping addAttributeMappingsFromDictionary:@{
@"geopoint.lat": @"latitude",
@"geopoint.lon": @"longitude",
@"countrycode": @"countryId",
@"county": @"county",
@"postcode": @"postalcode",
@"city": @"city",
@"street": @"street",
@"housenumber": @"housenumber"
}];有效结果(显示为log输出)
2013-01-29 09:29:38.856 CPlusApp[4285:907] T restkit.object_mapping:RKMappingOperation.m:514 Mapped relationship object from keyPath 'startAddress' to 'startAddress'. Value: {
city = aCity;
geopoint = {
lat = "48.8901234";
lon = "8.818448999999998976";
};
"geopoint.lat" = "48.8901234";
"geopoint.lon" = "8.818448999999998976";
postcode = 91000;
street = Rennbrunnen;
}
2013-01-29 09:29:38.861 CPlusApp[4285:907] D restkit.object_mapping:RKMappingOperation.m:818 Finished mapping operation successfully...发布于 2013-02-02 22:38:40
我也遇到过类似的情况,我可以看到两种解决方案:
1)为具有经度和经度属性的geopoint创建一个新类。然后将geopoint作为属性添加到对象的类中。从字典中删除两个映射(geopoint.lat & geopoint.lon),并添加一个从keyPath '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则不允许。
https://stackoverflow.com/questions/14578732
复制相似问题