RestKit 更新对象映射空属性
RestKit Update object maps null attributes
我正在尝试使用 RestKit 库对模型进行部分更新。我已经能够毫无问题地 create/list 模型。此外,我能够 crate/list 并使用 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 映射到 null 每个 属性 在模型中是 nil。我特别不想映射它们,所以服务器不会尝试更新任何空值。
我尝试使用
responseMapping.assignsDefaultValueForMissingAttributes = NO;
在映射中,但行为没有变化。
有什么方法可以让 RestKit 忽略而不映射任何 属性 为 nil 的东西吗?
PS:我尝试使用所有非空参数执行相同的调用,它更新模型完全没有问题。
您需要创建一个仅包含您要处理的键的特定映射。
assignsDefaultValueForMissingAttributes
用于设置缺失键的值。您所拥有的是定义键的缺失值。因此 assignsDefaultValueForMissingAttributes
不会为你做任何事情。
我正在尝试使用 RestKit 库对模型进行部分更新。我已经能够毫无问题地 create/list 模型。此外,我能够 crate/list 并使用 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 映射到 null 每个 属性 在模型中是 nil。我特别不想映射它们,所以服务器不会尝试更新任何空值。
我尝试使用
responseMapping.assignsDefaultValueForMissingAttributes = NO;
在映射中,但行为没有变化。
有什么方法可以让 RestKit 忽略而不映射任何 属性 为 nil 的东西吗?
PS:我尝试使用所有非空参数执行相同的调用,它更新模型完全没有问题。
您需要创建一个仅包含您要处理的键的特定映射。
assignsDefaultValueForMissingAttributes
用于设置缺失键的值。您所拥有的是定义键的缺失值。因此 assignsDefaultValueForMissingAttributes
不会为你做任何事情。