感謝help here和RestKit郵件列表,我已經能夠解析我的JSON,但現在我有一個新問題,解析一個空的響應。要設置舞臺,這裏是JSON的外觀,當我查詢有結果,如:對象使用RestKit映射一個空的響應
{"blobsList":
{"blobs":
[
{"createdOn":"2012-03-16T15:13:12.551Z","description":"Fake description ","hint":"And a useless hint","id":400,"name":"Fake CA one","publicId":"FF6","type":0},
{"createdOn":"2012-03-16T17:33:48.514Z","description":"No hint on this one, but it does have a description.","hint":"Hint","id":402,"name":"Second fake one in CA","publicId":"FF8","type":0}
]}}
所以我將此添加到我的映射:
RKObjectMapping* blobsListMapping = [RKObjectMapping mappingForClass:[GetResponseInRegionResponseList class]];
[blobsListMapping mapKeyPath:@"blobsList" toAttribute:@"blobsList"];
[[RKObjectManager sharedManager].mappingProvider setMapping:blobMapping forKeyPath:@"blobsList.blobs"];
[[RKObjectManager sharedManager].mappingProvider setMapping:blobsListMapping forKeyPath:@"blobsList"];
,並是我的職業:
@interface GetResponseInRegionResponse : NSObject
{
NSString* name;
NSString* blobId;
NSString* description;
NSString* hint;
}
@interface GetResponseInRegionResponseList : NSObject
{
NSArray *blobsList;
}
但現在的皺紋是我的服務器也可以返回這個JSON:
{"blobsList":""}
是的,如果查詢沒有結果,我會回來。它崩潰我的應用程序
restkit.object_mapping:RKObjectMapper.m:255 Performing object mapping sourceObject: {
blobsList = "";
}
and targetObject: (null)
2012-03-22 11:56:16.233 Ferret[7399:17a07] T restkit.object_mapping:RKObjectMapper.m:269 Examining keyPath 'blobs' for mappable content...
2012-03-22 11:56:16.233 Ferret[7399:17a07] D restkit.object_mapping:RKObjectMapper.m:279 Found unmappable value at keyPath: blobs
2012-03-22 11:56:16.233 Ferret[7399:17a07] T restkit.object_mapping:RKObjectMapper.m:269 Examining keyPath 'blobsList.blobs' for mappable content...
2012-03-22 11:56:16.239 Ferret[7399:17a07] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFConstantString 0xdb1d0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key blobs.'
所以我試圖想出一個辦法讓RESKIT映射此空響應。我試過所有這些:
[[RKObjectManager sharedManager].mappingProvider setMapping:blobListMapping forKeyPath:@"blobsList"];
[[RKObjectManager sharedManager].mappingProvider setMapping:NULL forKeyPath:@"blobsList"];
[blobListMapping mapKeyPath:@"" toAttribute:@"blobsList"];
[blobListMapping mapKeyPath:@"blobsList" toAttribute:@"blobsList"];
但他們都崩潰了。我試圖對源代碼進行正面和反面的描述,「這個類不是關鍵代碼的關鍵值編碼」,令人費解,因爲這裏沒有任何blob,只是blobsList。我感謝任何幫助,謝謝!
willMapData,很好,我會研究它。現在我有服務器人嘗試更改JSON,所以我可能沒有機會測試它。但是,如果今晚沒有完成,我在AM中就是如此。謝謝! – 2012-03-27 00:56:09
我能夠檢查objectLoader.response,看看它是否是「壞」的迴應,但我不清楚我應該設置我的mappableData。我只是想停止解析,回零對象。無顯然是錯誤的。我甚至嘗試建立一個解析對象,解析一個空白字符串,沒有這樣的運氣。 – 2012-03-27 14:01:51
好吧,明白了。可怕的黑客,一定有更好的辦法。但是,如果我這樣做:* mappableData = [解析器objectFromString:@「{\」unknownObject \「:\」\「}」錯誤:無];我不會崩潰,這很好。會愛一個更好的答案...: - ) – 2012-03-27 14:18:07