Erstellen Sie einen Beitrag zur API mit RKParams und ordnen Sie die Antwort mit RKObjectMapping mit RestKit zu

Im Moment arbeite ich an einer umfassenden Überarbeitung meines Codes und möchte die Art und Weise, wie ich Restkit verwende, vereinheitlichen. Ich hatte verschiedene Möglichkeiten, RPC-Aufrufe an meinen API-Server und REST-Aufrufe durchzuführen.

REST-Aufrufe wurden mit objectMapping und RPC-Aufrufe mit dem RKClient durchgeführt. Außerdem verwende ich Blöcke anstelle von Delegaten, was großartig ist, aber ich habe einige Zweifel, wie es funktioniert.

Hier ist der Code, den ich vorher hatte, der gut funktioniert hat, um das Objekt zu veröffentlichen und das Mapping manuell mit Delegaten durchzuführen. Danach ist der neue Code mit Blöcken, die die Parameter nicht senden.

//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];
        };

    }];

}

Die Anfrage, die ich sende, ist leer. Das bedeutet, dass die Parameter nicht ordnungsgemäß gesendet oder erledigt werden. Irgendwelche Ideen, wie man das zum Laufen bringt?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage