2012-06-04 69 views
2

我的RestKit應用程序發送它的核心數據對象時失敗,因爲生成的JSON的布爾屬性值爲10,而不是true或false。服務器不喜歡它。如何使用RestKit發送布爾值?

轉換髮生在JSONKit.m在行2723,其中代碼確實是這樣的:

if (object == (id)kCFBooleanTrue) { /*... yield "true" */ } 
else if (object == (id)kCFBooleanFalse) { /*... yield "false" */ } 
/* else yield integer */ 

這裏比較失敗。我的核心數據對象顯然存儲它的真實值爲[NSNumber numberWithInt:1]而不是[NSNumberWithBool:YES](我很驚訝地發現它們導致不同的對象,儘管調試器打印爲1)。

注意,我設置與布爾屬性:

myManagedObject.boolFieldValue = myUISwitch.on; 

boolFieldValue是MOgenerator定義的屬性,與二傳的存在:

-(void) setBoolFieldValue:(BOOL)value_ { 
    [self setBoolField:[NSNumber numberWithBool:value_]]; 
} 

有沒有辦法強制輸出1值爲真?

+0

你在哪裏實際上創建JSON? – borrrden

+0

RestKit會使用它的映射魔術。 –

回答

1

我正在開發基於Restkit的項目,我也在使用Core Data集成。 我也有布爾字段,並沒有這樣的問題。

  • 對於我的NSManagedObject,我的屬性被定義爲一個NSNumber。
  • 在覈心數據,相應的屬性被定義爲INTEGER16(不記得我爲什麼不挑布爾,但可能是我有同樣的問題,因爲你有)
  • 要設置我的布爾值,我現在用的是這樣的:

[myObject setValue:[NSNumber numberWithBool:value] forKey:@"booleanAttribute"];

+0

因此,這表明我的代碼在某處的錯誤。我需要進一步調查一下。 –