Tworzenie postu do API za pomocą RKParams i mapowanie odpowiedzi za pomocą RKObjectMapping przy użyciu RestKit

W tej chwili wykonuję ogromną przeróbkę mojego kodu i chcę ujednolicić sposób korzystania z Restkit. Oddzieliłem sposoby wywoływania wywołań RPC do mojego serwera API i wywołań REST.

Wywołania REST dokonywane przy użyciu wywołań objectMapping i RPC, gdy są wykonywane za pomocą RKClient. Poza tym używam bloków zamiast delegatów, co jest świetne, ale mam pewne wątpliwości, jak to działa.

Oto kod, który miałem wcześniej, który ładnie działał, aby opublikować obiekt i wykonać mapowanie ręcznie za pomocą delegatów, a następnie nowy kod wykorzystujący bloki, które nie wysyłają params.

//This was the old way...
- (void) upload: (KFMedia *) pic {

    RKParams* imageParams = [RKParams params];
    NSData* imageData = UIImageJPEGRepresentation(pic.image, 0.7f);
    [imageParams setData:imageData MIMEType:@"image/jpg" forParam:@"FileUpload"];

    [[RKClient sharedClient] post:@"/api/upload/" params:imageParams delegate:self]; 

}

//This is the new way I'm trying...
- (void) upload: (KFMedia *) pic onLoad:(RKObjectLoaderDidLoadObjectBlock) loadBlock onError:(RKRequestDidFailLoadWithErrorBlock)failBlock{

    RKParams* imageParams = [RKParams params];
    NSData* imageData = UIImageJPEGRepresentation(pic.image, 0.7f);
    [imageParams setData:imageData MIMEType:@"image/jpg" forParam:@"FileUpload"];

    [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/api/upload/" usingBlock:^(RKObjectLoader *loader) {

        //Trying to set params here, but it seems that I'm not sending anything :(
        loader.params = imageParams;
        loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[KFMedia class]];
        loader.delegate = self;
        loader.onDidLoadObject = loadBlock;
        loader.onDidFailWithError = failBlock;
        loader.onDidFailLoadWithError = failBlock;
        loader.onDidLoadResponse = ^(RKResponse *response) {
            [self fireErrorBlock:failBlock onErrorInResponse:response];
        };

    }];

}

Żądanie, które wysyłam, ma puste ciało, co oznacza, że ​​params nie są wysyłane ani poprawnie ustawiane. Jakieś pomysły, jak to zrobić?

questionAnswers(1)

yourAnswerToTheQuestion