RestKit:更改RKObjectManager的基本URL

kra*_*g22 6 iphone ipad ios restkit

是否可以RKObjectManager在创建后更改基本URL ?

我有登录框,从昵称我决定API应该使用哪个URL.如果我RKObjectManager在填写缺口/密码后创建,我只能通过RestKit进行单一呼叫(https://groups.google.com/forum/?fromgroups#!topic/restkit/wFNhpCW-URA).如果我创建RKObjectManager viewDidLoad功能 - 我无法更改URL.

我的问题有同样的解决方案吗?

谢谢.

Kyl*_*egg 12

只花了一段时间弄清楚如何在v0.20中完成这项工作.据我所知,您无法直接更改基本URL而无需进入AFNetworking源代码.您可以创建一个新的HTTPClient并设置它,但我发现这会导致更多的问题,大概是因为RestKit HTTPClient在设置时在AFNetworking上进行了一些额外的配置RKObjectManager,并且通过直接设置客户端,你错过了它.

我提出了这个解决方案,即RKObjectManager使用新的baseURL 创建另一个解决方案并重新添加描述符.您还需要再次设置序列化和标头类型.

NSString *urlString = @"http://www.something.com/api";
RKObjectManager *newManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:urlString]];
[newManager setRequestSerializationMIMEType:RKMIMETypeJSON];
[newManager setAcceptHeaderWithMIMEType:RKMIMETypeJSON];
[newManager addResponseDescriptorsFromArray:[RKObjectManager sharedManager].responseDescriptors];
[newManager addRequestDescriptorsFromArray:[RKObjectManager sharedManager].requestDescriptors];
[RKObjectManager setSharedManager:newManager];
Run Code Online (Sandbox Code Playgroud)

相关文档:在RestKit中使用多个基本URL


Ant*_*vre 6

以下是baseURL在init之后更改RestKit的方法:

[RKObjectManager sharedManager].client.baseURL = [RKURL URLWithString:newBaseUrlString];
Run Code Online (Sandbox Code Playgroud)

来自RestKit doc的通知:

更改baseURL会产生导致重建requestCache实例的副作用.高速缓存按主机维护.

我用它,它工作正常:)