Restkit:迁移到0.20

时间:2012-12-05 12:02:10

标签: macos restkit restkit-0.20

我正在尝试迁移到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请求的服务器登录..)

任何帮助?

谢谢

2 个答案:

答案 0 :(得分:2)

我和你有同样的问题,我在这里得到了一个很好的答案:

Trying to make a POST request with RestKit and map the response to 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];

README部分的托管对象请求中有一个示例可以帮助您:

https://github.com/RestKit/RestKit

答案 1 :(得分:1)

您可以直接使用AFNetworking使用RK HTTPClient子类,如下所示:

[[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

修改

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