4

RestKit0.20-pre2に移行しようとしています。

現在、マッピングを移行することができました(少なくともコンパイラはもう文句を言いません)が、リクエストの作成に問題があります(以前はもう存在しないRKObjectLoaderを使用していました)。

私の以前のコードは次のとおりです。

- (RKObjectLoader*)objectLoaderWithResourcePath: (NSString*)resourcePath
                                     method: (RKRequestMethod)httpMethod
                                 parameters: (NSDictionary*)parameters
                              mappableClass: (Class)objectClass
{
RKObjectMapping *mapping = [self.objectManager.mappingProvider     objectMappingForClass:objectClass];

NSString *path = resourcePath;
if (httpMethod == RKRequestMethodGET) {
    path = [resourcePath stringByAppendingQueryParameters:parameters];
}
RKObjectLoader *request = [self.objectManager loaderWithResourcePath:path];
request.method = httpMethod;
request.delegate = self;
request.objectMapping = mapping;
if (httpMethod != RKRequestMethodGET) {
    request.params = parameters;
}

return request;
}

上記の方法を使用してジェネリックリクエストを作成し、同期または非同期で送信しました。今...私は新しいメソッドを見ましたgetObjectsAtPath: parameters: success: failure:、しかし..私はPOSTのために同じものが必要です(そして私は投稿するオブジェクトを持っていません...それは単にログインのためのPOSTリクエストを受け入れるサーバーです..)

何か助けはありますか?

ありがとうございました

4

2 に答える 2

2

私はあなたと同じ問題を抱えていました、そして私はここで素晴らしい答えを受け取りました:

RestKitを使用してPOSTリクエストを作成し、応答をCoreDataにマッピングしようとしています

基本的に、

これはあなたが必要とするものです:

 NSDictionary *dictionary = @{ @"firstParam": @(12345), @"secondParam": @"whatever"};
 NSMutableURLRequest *request = [objectManager requestWithObject:nil     method:RKRequestMethodPOST path:@"/whatever" parameters:parameters];

 RKObjectRequestOperation *operation = [objectManager  objectRequestOperationWithRequest:request ^(RKObjectRequestOperation *operation,     RKMappingResult *result) {
NSLog(@"Loading mapping result: %@", result);
  } failure:nil];

READMEセクションのManagedObjectRequestに、次の例があります。

https://github.com/RestKit/RestKit

于 2012-12-21T13:20:00.637 に答える
1

次のように、RKHTTPClientサブクラスを使用してAFNetworkingを直接使用できます。

[[RKObjectManager sharedManager].HTTPClient postPath:@"/auth" parameters:params success:^(AFHTTPRequestOperation *operation, id JSON)
 {
     // Success
 } failure:^(AFHTTPRequestOperation *operation, NSError *error)
 {
     // Error
 }];

RestKit v0.20.x以降、RKはRKClientの代わりに内部でAFNetworkingを使用するようになったため、AFNetworkingのドキュメントを直接参照できます。

http://afnetworking.github.com/AFNetworking/Classes/AFHTTPClient.html#//api/name/postPath:parameters:success:failure

編集

私のプロジェクトでは、認証のために、シングルトンを使用してUserという名前のNSObjectを作成し、マッピングを自分で管理しました。私は(個人的に)コアデータスタックに認証ユーザーを置く必要はありませんでした。RK Coreデータマッピング機能を使用する必要がある場合は、postObject:path:parameters:success:failure:メソッドを使用してRKObjectManagerを確認してください。

于 2012-12-06T21:23:45.663 に答える