6

作成後にのベースURLを変更することはできますRKObjectManagerか?

ログインボックスがあり、ニックネームから、使用するAPIのURLを決定します。RKObjectManagerニックネーム/パスワードを入力して作成した場合、RestKit( https://groups.google.com/forum/?fromgroups#!topic/restkit/wFNhpCW-URA)からの呼び出しは1回だけです。RKObjectManager viewDidLoad関数を作成した場合-URLを変更できません。

私の問題に対する同じ解決策はありますか?

ありがとう。

4

4 に答える 4

12

これがv0.20でどのように行われるかを理解するのに少し時間を費やしました。私の知る限り、AFNetworkingのソースコードを使用せずにベースURLを直接変更することはできません。新しいものを作成して設定することはでき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];

関連ドキュメント:RestKitでの複数のベースURLの使用

于 2013-06-18T23:38:37.050 に答える
6

baseURLinit後にRestKitを変更する方法は次のとおりです。

[RKObjectManager sharedManager].client.baseURL = [RKURL URLWithString:newBaseUrlString];

RestKitドキュメントからの通知:

baseURLを変更すると、requestCacheインスタンスが再構築されるという副作用があります。キャッシュはホストごとに維持されます。

私はそれを使用し、それはうまくいきます:)

于 2012-08-31T09:43:41.870 に答える
2

気をつけて!

RestKit 2.0で受け入れられた回答を使用しましたが、残念ながら、これにより、restkit内でのクラッシュのデバッグが困難になりました。うまくいったのは、記述子の作成とその他のobjectmanager設定のすべてをメソッドにカプセル化し、[RKObjectManager setSharedManager:newManager]を呼び出す前に新しいオブジェクトマネージャーオブジェクトでそれを呼び出すことでした。

于 2014-01-31T03:36:04.237 に答える
1

これに対する解決策はないと思います。RestKitは内部でベースURLを使用するため、変更できません。

于 2012-05-17T14:46:55.327 に答える