RestKit Update对象映射空属性

时间:2015-11-26 10:26:49

标签: ios rest restkit updatemodel

我正在尝试使用RestKit库对模型进行部分更新。我已经能够毫无问题地创建/列出模型。此外,我能够使用Rest API和邮递员进行包装/列表和更新。 使用RestKit进行更新时出现问题。

这是我的映射:

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会将模型中nil的每个属性映射为null。我特别想不要映射它们,所以服务器不会尝试更新任何空值。

我尝试使用

responseMapping.assignsDefaultValueForMissingAttributes = NO;

在映射中,但行为没有变化。

有什么方法可以告诉RestKit忽略并且不映射任何属性为nil的属性?

PS:我尝试使用所有非空参数执行相同的调用,并且它完全更新了模型。

1 个答案:

答案 0 :(得分:2)

您需要仅使用要处理的键创建特定的映射。

assignsDefaultValueForMissingAttributes用于设置缺失键的值。你所拥有的是缺少已定义键的值。因此,assignsDefaultValueForMissingAttributes不会为您做任何事情。