0
現在我正在爲我的代碼做一個巨大的重構,並且我想統一使用Restkit的方式。我分開了對我的API服務器和REST調用進行RPC調用的方法。使用RKParams向API發佈帖子並使用RestKit將響應映射到RKObjectMapping
REST調用其中使用objectMapping和RPC調用使用RKClient進行的調用。除此之外,我使用的是塊而不是代表,這很好,但我對它的工作原理有些懷疑。
這是我以前的代碼,很好地發佈對象並使用委託手動執行映射,之後是使用不發送參數的塊的新代碼。
//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];
};
}];
}
我發送的請求有它的主體爲空,這意味着參數沒有被髮送或設置正確。任何想法如何讓這個工作?