RestKit: serializedObjectForMIMEType завершился ошибкой - PullRequest
2 голосов
/ 28 декабря 2011

Я пытаюсь получить строку формата JSON из моего пользовательского объекта с помощью RestKit.

Вот мой код:

@interface MyPhoneModel : NSObject

@property (nonatomic, copy) NSString *number;
@property (nonatomic, copy) NSString *tag;

@end

@interface MyContactModel : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSArray *phoneList;

@end

- (NSString *)jsonString:(MyContactModel *)contact
{
    RKObjectMapping *phoneMapping = [RKObjectMapping mappingForClass:[MyPhoneModel class]];
    [phoneMapping mapKeyPath:@"number" toAttribute:@"number"];
    [phoneMapping mapKeyPath:@"tag" toAttribute:@"tag"];

    RKObjectMapping *contactMapping = [RKObjectMapping mappingForClass:[MyContactModel class]];
    [contactMapping mapKeyPath:@"name" toAttribute:@"name"];
    [contactMapping mapKeyPath:@"phoneList" toRelationship:@"phoneList" withMapping:phoneMapping];

    NSError *error = nil;
    NSString *json = [[RKObjectSerializer serializerWithObject:contact mapping:contactMapping] serializedObjectForMIMEType:RKMIMETypeJSON error:&error];
    return json;
}

Но когда я вызываю этот метод, он завершается с ошибкой. Ошибка Domain = JKErrorDomain Code = -1 "Невозможно сериализовать объектный класс MyPhoneModel." UserInfo = 0x898c400 {NSLocalizedDescription = Невозможно сериализовать объектный класс MyPhoneModel.

Итак, как решить эту проблему?

1 Ответ

1 голос
/ 28 декабря 2011

Я нашел эту ссылку: Примеры использования

В каждом примере, который я мог найти, сопоставление выполняется с помощью [NSDictionary class] или [NSMutableDictionary class]

Такможет быть так:

RKObjectMapping* phoneMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class] ];
[phoneMapping  mapAttributes:@"number", @"tag", nil];

 RKObjectMapping *contactMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
[contactMapping mapKeyPath:@"name" toAttribute:@"name"];
[contactMapping mapKeyPath:@"phoneList" toRelationship:@"phoneList" withMapping:phoneMapping];

Вы хотите эту сериализованную строку для использования с RKClient?

...