Разбор JSON с помощью RestKit

Я когда-то использую RestKit, но некоторые API изменились в последней версии, и я больше не могу анализировать простой JSON.

Вот полезная нагрузка, которая у меня есть:

{
   "result":true,
   "items":[
      {
         "id":"1",
         "receiver":"11011101"
      },
      {
         "id":"2",
         "receiver":"11011101"
      }
   ]
}

Как я могу проанализировать содержимое словаря "items" как экземпляры созданного мной объекта Conversation?

Использование приведенного ниже кода не работает (объекты никогда не отображаются):

RKObjectMapping* conversationMapping = [RKObjectMapping mappingForClass:[Conversation class]];
[conversationMapping mapKeyPath:@"id" toAttribute:@"id"];
[conversationMapping mapKeyPath:@"receiver" toAttribute:@"receiver"];

[[RKObjectManager sharedManager].mappingProvider setMapping:conversationMapping forKeyPath:@"items"];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/getConversations" delegate:self];

Разговорный класс

@interface Conversation : NSObject {
    NSString *id;
    NSString *receiver; }

+ (void)objectMapping;

@property (nonatomic, strong) NSString *id; @property (nonatomic, strong) NSString *receiver;

@end

@implementation Conversation
@synthesize id;
@synthesize receiver;


+ (void)objectMapping {
    RKObjectMapping* conversationMapping = [RKObjectMapping mappingForClass:[Conversation class]];
    [conversationMapping mapKeyPath:@"id" toAttribute:@"id"];
    [conversationMapping mapKeyPath:@"receiver" toAttribute:@"receiver"];

    [[RKObjectManager sharedManager].mappingProvider setMapping:conversationMapping forKeyPath:@"items"];
}

@end

person Hesham    schedule 23.09.2012    source источник
comment
покажи свой Conversation класс   -  person wattson12    schedule 23.09.2012
comment
возможно, вам стоит использовать jsonkit напрямую.   -  person Janub    schedule 23.09.2012


Ответы (2)


Как определяется ваш корневой объект (тот, который содержит «результат» и ваши «элементы» разговора)? Это должно выглядеть примерно так:

@interface MyResponse

@property (неатомный, сильный) NSArray * items; @property (неатомный, присвоить) результат BOOL;

с соответствующим отображением для этого.

person Dan Morrow    schedule 25.09.2012

Я решил проблему. Это было что-то совершенно не связанное с RestKit. Тип содержимого ответа, возвращаемого с сервера, не был установлен на JSON, после исправления этого сопоставления объектов все работало нормально.

person Hesham    schedule 26.09.2012