Я использую RestKit для взаимодействия с моим веб-сервером. Я пытаюсь использовать маршрутизацию для POST объекта Event на сервер с прикрепленным к нему изображением. Код выглядит следующим образом:
RKObjectManager *manager = [RKObjectManager sharedManager];
RKObjectMapping *map = [self eventMapping];
manager.serializationMIMEType = RKMIMETypeFormURLEncoded;
map.rootKeyPath = @"event";
[manager.mappingProvider setSerializationMapping:map forClass:[Event class]];
[manager.router routeClass:[Event class] toResourcePath:@"/v1/events.json" forMethod:RKRequestMethodPOST];
[manager postObject:event delegate:self block:^(RKObjectLoader *loader){
RKObjectMapping *serMap = [[[RKObjectManager sharedManager] mappingProvider] serializationMappingForClass:[Event class]];
NSError *error = nil;
NSDictionary *d = [[RKObjectSerializer serializerWithObject:event mapping:serMap] serializedObject:&error];
RKParams *p = [RKParams paramsWithDictionary:d];
[p setData:[event imageData] MIMEType:@"image/jpeg" forParam:@"image"];
loader.params = p;
}];
Если я создаю экземпляр RKParams с использованием сериализованного объекта Event, добавьте данные изображения и назначьте его как свойство params RKObjectLoader, все свойства станут одной массивной сериализованной строкой. Должен быть способ загрузить изображение без массивной сериализации строк.
Я также пробовал иметь свойство NSData, которое сопоставляется с каким-то атрибутом, преобразовывая UIImage в NSData на этом пути, но RestKit жалуется, что его нельзя сопоставить. Кто-нибудь сделал это раньше?