2012-02-07 27 views
3

現在我正在使用Restkit從iPhone設備向遠程服務器發出REST和RPC請求,這是一個非常棒的庫。使用Restkit發送整數爲json使用Restkit

現在我陷入了一個簡單的問題。我的服務器預計一些數據爲整數。這意味着一個看起來像這樣的json數組。

{'myInteger':1234} 

請注意,my_integer_field項的值不在''之間。這意味着該值是一個數字而不是一個字符串。

當我製作映射和所有的東西時,我將my_integer_field設置爲對象定義中的一個NSNumber值。但是,當物體被解析成JSON之間出現「價值」,如:

{'myInteger':'1234'} 

所以我得到一個錯誤,因爲來自服務器的響應,因爲這asuming「1234」代表一個字符串,而不是一個數字。有沒有辦法強制json解析不在'NSNumber字段中包含''?

UPDATE

下面是代碼:

//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

什麼(我說什麼)你試圖映射到JSON,轉換成字符串!在獲取它時,你必須進行明確的轉換管理! – Chintan 2012-02-08 11:25:10

+0

所以......做我想做的事不是可行的嗎? – clopez 2012-02-08 17:07:24

+0

其可能!但是當你使用json數據時,嘗試輸入cast然後使用它!明白了我的觀點? – Chintan 2012-02-08 17:11:04

回答

0

我不能準確地知道爲什麼你這種行爲,但你嘗試過只用:

RKObjectMapping* myClassSerializationMapping = [myClassMapping inverseMapping]; [[RKObjectManager sharedManager].mappingProvider setSerializationMapping:myClassSerializationMapping forClass:[myClass class]];

雖然我相信RestKit默認使用inverseMapping如果沒有指定serializationMapping的,所以你可能能夠完全放棄那部分。