Благодаря справке здесь и списку рассылки RestKit мне удалось проанализировать мой JSON, но теперь у меня возникла новая проблема - анализ пустого ответа.Чтобы подготовить почву, вот как выглядит JSON, когда мой запрос дает результаты:
{"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"];
Но все они терпят крах.Я пытаюсь сделать из головы и хвоста исходники, «этот класс не совместим с кодировкой значений ключей для больших двоичных объектов» озадачивает, так как там нет никаких больших двоичных объектов, просто blobsList.Я ценю любую помощь, спасибо!