2016-06-20 2 views
0

Некоторые из моих объектов имеют поле «id», а RestKit не позволяет мне отображать их оба в одно и то же имя. Как я могу это исправить? Для этих двух объектов у меня есть соответствующий объект на стороне сервера с свойством MyId, которое нужно заполнить. Я не хочу переименовывать свойства в качестве решения.Restkit Невозможно добавить сопоставление для keyPath

Вот пример двух классов можно использовать:

@interface MyObject : NSObject 
@property NSNumber *id; 
@end 

@interface AnotherObject : NSObject 
@property NSNumber *id; 
@end 

Вот пример кода, который я бы работать на обоих этих объектов:

RKObjectManager* objectManager = [RKObjectManager managerWithBaseURL:url]; 
RKObjectMapping *userMapping = [RKObjectMapping requestMapping]; 
NSDictionary *objMapping = @{@"id": @"MyId"}; 

[userMapping addAttributeMappingsFromDictionary:objMapping]; 
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:userMapping objectClass:[MyObject class] rootKeyPath:nil method:RKRequestMethodPOST]; 
[objectManager addRequestDescriptor:requestDescriptor]; 

objMapping = @{@"id": @"MyId"}; 

[userMapping addAttributeMappingsFromDictionary:objMapping]; 
requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:userMapping objectClass:[AnotherObject class] rootKeyPath:nil method:RKRequestMethodPOST]; 
[objectManager addRequestDescriptor:requestDescriptor]; 

Здесь ошибка что я получил бы:

Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Невозможно добавить сопоставление для keyPath MyId, один уже существует ...»

+0

я думаю, что ваша оценка вопроса неточна - показать определение «MyObject» и точно объяснить, что вы делаете, когда получаете исключение (показать трассировку стека). – Wain

+0

Обновлено сообщение, которое будет более конкретным. – HawkEye1194

+0

Спасибо за помощь! Также вы случайно знаете какие-либо сайты для хороших учебников RestKit? Относительно новичок в этом. Уже знаете о обучающем курсе RestKit github, но было интересно, есть ли еще. – HawkEye1194

ответ

1

Проблема заключается в том, что просто вы звоните:

[userMapping addAttributeMappingsFromDictionary:objMapping]; 

Несколько раз с теми же параметрами, что и не допускается.

В конкретном случае в вашем вопросе вам не нужна эта вторая строка. В общем случае, если бы некоторые другие различия в отображении, так что вы хотите создать новое отображение (а затем добавить словарь отображений к нему):

[RKObjectMapping requestMapping] 
Смежные вопросы