现在我正在使用Restkit从iPhone设备向远程服务器发出REST和RPC请求,这是一个非常棒的库。
现在我遇到了一个简单的问题。我的服务器期望一些数据为整数。这意味着一个看起来像这样的json数组。
{'myInteger':1234}
请注意my_integer_field键的值不在''之间。这意味着该值是一个数字而不是字符串。
当我制作映射和所有内容时,我将my_integer_field设置为对象定义中的NSNumber值。但是当对象被解析为Json时,值出现在''like:
之间{'myInteger':'1234'}
所以我从服务器得到一个错误,因为假设'1234'代表一个字符串而不是一个数字。有没有办法强制json解析不包括''在NSNumber字段上?
更新
以下是代码:
//myclass.h
@interface myClass : NSObject {
NSNumber *myInteger;
}
@property (nonatomic, retain) NSNumber *myInteger;
//appDelegate.m here is where i define the mappings for everything.
//myClass MAPPING
RKObjectMapping* myClassMapping = [RKObjectMapping mappingForClass:[myClass class]];
[myClassMapping mapAttributes:@"myInteger", nil];
[[RKObjectManager sharedManager].mappingProvider addObjectMapping:myClassMapping];
// myClass SERIALIZATION
RKObjectMapping* myClassSerializationMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
[myClassSerializationMapping mapAttributes:@"myInteger", nil];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:myClassSerializationMapping forClass:[myClass class]];
我错过了什么?
答案 0 :(得分:0)
我不确定为什么会出现这种行为,但您是否尝试过使用:
RKObjectMapping* myClassSerializationMapping = [myClassMapping inverseMapping];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:myClassSerializationMapping forClass:[myClass class]];
虽然我认为如果没有指定serializationMapping,默认情况下RestKit会使用inverseMapping,所以你可以完全不用掉那部分。