Я использую 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 жалуется, что это не может быть сопоставлено. Кто-нибудь делал это раньше?