2015-11-26 5 views
0

Я пытаюсь выполнить частичное обновление модели с использованием библиотеки RestKit. Я уже могу создать/перечислить модели без проблем. Кроме того, я могу сортировать/списывать и обновлять с помощью Rest API и почтальона. Проблема возникает при обновлении с помощью RestKit.Объект RestKit Update отображает нулевые атрибуты

Это мое отображение:

RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[UserProfile class]]; 
NSDictionary *resultsMappingDictionary = @{@"id": @"profileId", 
              @"username": @"username", 
              @"first_name": @"firstName", 
              @"last_name": @"lastName", 
              @"email": @"email", 
              @"description": @"job", 
              @"image": @"imgUrl", 
              @"auth_token": @"authToken" 
              }; 

responseMapping.assignsDefaultValueForMissingAttributes = NO; 
[responseMapping addAttributeMappingsFromDictionary:resultsMappingDictionary]; 

return responseMapping; 

Когда я выполнить обновление с помощью объекта UserProfile содержится только по электронной почте, с помощью метода

- (void)putObject:(id)object 
     path:(NSString *)path 
    parameters:(NSDictionary *)parameters 
     success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success 
     failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure 

сталкиваюсь ошибку, идущий от сервера,

NSLocalizedRecoverySuggestion={"first_name":["This field may not be null."],"last_name":["This field may not be null."],"description":["This field may not be null."],"image":["This field may not be null."] 

Я думаю, что RestKit отображает нуль для каждого свойства, которое равно нулю в модели. Я бы специально не собирался их сопоставлять, поэтому сервер не пытается обновлять любые нулевые значения.

Я пытался использовать

responseMapping.assignsDefaultValueForMissingAttributes = NO; 

в отображении, но без каких-либо изменений в поведении.

Есть ли способ сказать RestKit просто игнорировать и не отображать какое-либо свойство, которое равно нулю?

PS: Я пробовал выполнить тот же вызов со всеми ненулевыми параметрами, и он обновляет модель без каких-либо проблем.

ответ

1

Вам необходимо создать конкретное сопоставление только с ключами, которые вы хотите обработать.

assignsDefaultValueForMissingAttributes Используется для установки значений для отсутствующих ключей. У вас отсутствуют значения для определенных ключей. Следовательно, assignsDefaultValueForMissingAttributes ничего не делает для вас.

Смежные вопросы