4

我正在尝试迁移到 RestKit 0.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 请求并将响应映射到 Core Data

基本上,

这就是你需要的:

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

在自述文件部分托管对象请求中有一个示例可以帮助您:

https://github.com/RestKit/RestKit

于 2012-12-21T13:20:00.637 回答
1

您可以使用 RK HTTPClient 子类直接使用 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 现在在底层使用 AFNetworking 而不是 RKClient,因此您可以直接参考 AFNetworking 文档:

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

编辑

在我的项目中,对于身份验证,我只是创建了一个名为 User 的 NSObject,带有一个单例,并自己管理映射。我(个人)不需要在我的核心数据堆栈中拥有我的 auth 用户。如果您需要使用 RK Core 数据映射功能,请查看带有postObject:path:parameters:success:failure:方法的 RKObjectManager。

于 2012-12-06T21:23:45.663 回答