Ios RestKit:“;multipartFormRequestWithObject“;仅发送附件,对象属性丢失

Ios RestKit:“;multipartFormRequestWithObject“;仅发送附件,对象属性丢失,ios,restkit,Ios,Restkit,我需要发布一个带有图像的Realty对象: -(void) addRealty:(Realty*)realty withImages:(NSDictionary*)images success:(void (^)(Realty *))callback failure:(void(^)(void))failure { UIImage *image = [UIImage imageNamed:@"test.png"]; NSMutableURLRequest *request = [_

我需要发布一个带有图像的Realty对象:

-(void) addRealty:(Realty*)realty withImages:(NSDictionary*)images success:(void (^)(Realty *))callback failure:(void(^)(void))failure
{
   UIImage *image = [UIImage imageNamed:@"test.png"];

   NSMutableURLRequest *request = [_httpClient multipartFormRequestWithObject:realty method:RKRequestMethodPOST path:@"/realties.json" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData appendPartWithFileData:UIImagePNGRepresentation(image)
                                        name:@"_realty[images][0]"
                                    fileName:@"test.png"
                                    mimeType:@"image/png"];
        }];

        RKObjectRequestOperation *operation = [_httpClient objectRequestOperationWithRequest:request success:nil failure:nil];
        [_httpClient enqueueObjectRequestOperation:operation];
    }
}

您必须为Realty添加RKRequestDescriptor对象

RKObjectMapping* realtyMapping = <...>;
RKRequestDescriptor* reqDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:realtyMapping
objectClass:[Realty class]
rootKeyPath:nil
method:RKRequestMethodAny];
[[RKObjectManager sharedManager] addRequestDescriptor:reqDescriptor];
RKObjectMapping*realtyMapping=;
RKRequestDescriptor*reqDescriptor=[RKRequestDescriptor RequestDescriptor WithMapping:realtyMapping
objectClass:[不动产类]
rootKeyPath:nil
方法:RKRequestMethodAny];
[[RKObjectManager sharedManager]addRequestDescriptor:reqDescriptor];

祝您好运:)

您可能需要使用
[realtyMapping inverseMapping]
RKObjectMapping *realtyMapping = [RKObjectMapping mappingForClass:[Realty class]];
[realtyMapping addAttributeMappingsFromArray: @[@"_id",@"user_id",@"description",@"notes",@"address",@"coords",@"pictures",@"area",@"rtype",@"rooms",@"price",@"price_m",@"title"]];

// - multiple
RKResponseDescriptor *realtiesDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:realtyMapping method:RKRequestMethodAny pathPattern:nil keyPath:@"realties" statusCodes:statusCodes];
[_httpClient addResponseDescriptor:realtiesDescriptor];
// - single
RKResponseDescriptor *realtySingleDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:realtyMapping method:RKRequestMethodAny pathPattern:nil keyPath:@"realty" statusCodes:statusCodes];
[_httpClient addResponseDescriptor:realtySingleDescriptor];
RKObjectMapping* realtyMapping = <...>;
RKRequestDescriptor* reqDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:realtyMapping
objectClass:[Realty class]
rootKeyPath:nil
method:RKRequestMethodAny];
[[RKObjectManager sharedManager] addRequestDescriptor:reqDescriptor];