2012-02-27 7 views
5

Restkitフレームワークでキャッシングを無効にするのは本当に苦労します。 キャッシュポリシーをnoneに設定しようとしましたが、何の効果もありません。これを行う正しい方法は何ですか?Restkit、キャッシングを無効にする

答えて

7

あなたはクライアントを持って、明示的にそれを初期化したらそう:

RKClient *client = [RKClient clientWithBaseURL:url]; 

またはオブジェクト・マネージャがそれを行うせることにより:

RKObjectManager* om = [RKObjectManager managerWithBaseURLString:url]; 
RKClient *client = om.client; 

それだけで設定の簡単な問題でなければなりませんキャッシュポリシー:

client.cachePolicy = RKRequestCachePolicyNone; 

これは何でしたか?

更新:ログメッセージが唯一の問題であるため、そのソースを追跡することにしました。 tl; drバージョンは、メッセージを無視し、ロギングプロキシがあなたに伝えていることを信頼することです。

「パスでキャッシュを無効にする」を検索し、RKCache invalidateSubDirectory:RKCache invalidateAllの2つの場所にあり、ブレークポイントを設定しました。ここに私のコードの一部から部分スタックトレースです:私はこれを見学んだ

#0 0x000e6c66 in -[RKCache invalidateSubDirectory:] at RestKit/Code/Support/RKCache.m:189 
#1 0x0006b767 in -[RKRequestCache invalidateWithStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:237 
#2 0x0006b958 in -[RKRequestCache setStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:253 
#3 0x00069abf in -[RKRequestCache initWithPath:storagePolicy:] at RestKit/Code/Network/RKRequestCache.m:60 
#4 0x000586f3 in -[RKClient baseURLDidChange:] at RestKit/Code/Network/RKClient.m:339 
#5 0x000589ce in -[RKClient observeValueForKeyPath:ofObject:change:context:] at RestKit/Code/Network/RKClient.m:373 
#6 0x0183cd91 in NSKeyValueNotifyObserver() 
#7 0x0183c895 in NSKeyValueDidChange() 
#8 0x0182233e in -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:]() 
#9 0x01844a82 in _NSSetObjectValueAndNotify() 
#10 0x00057404 in -[RKClient initWithBaseURL:] at RestKit/Code/Network/RKClient.m:176 
#11 0x00056df3 in +[RKClient clientWithBaseURL:] at RestKit/Code/Network/RKClient.m:130 

キャッシュを制御する2つの列挙型があるということです。

あなたがクライアント上で設定したものである
  • RKRequestCachePolicy、キャッシュが参照された時点を制御します。
  • RKRequestCacheStoragePolicy結果がデバイスに保存される期間(決して、セッションの持続時間、永続的)を決定します。クライアントのセットアップの一環として

、URLが設定されている場合、クライアントはRKRequestCacheStoragePolicyPermanentlyは、ストレージポリシーを設定して新しいキャッシュを作成するには、前のセッションのキャッシュをクリアし、あればキャッシュが無効になり、永久キャッシュを必要とします。これは、ロギングメッセージに表示されているクリアです。

+0

ご返信ありがとうございます。私はちょうど試したが、メッセージ "restkit.support:RKCache.m:178パスでのキャッシュを無効にする:" –

+0

それはキャッシングを提案する唯一のものですか?チャールズや別のロギングプロキシを使って、サーバーに何が流れているのか見てみましたか? – drewish

+0

私はプロキシのログを試みましたが、何もうまくいかず、私はサーバーの予想されるデータを受け取りました。実際には、何もアプリケーションの動作に間違っている、私のデータは良いです、すべてが期待どおりに行く。しかし、私のロガーは私に "パスでのキャッシュを無効にしています:...."と言っています。 restkitのように見えますが、キャッシュの既存のファイルを削除しようとしましたが、できません。 私はちょうどそのような行為がパフォーマンスやアップルの検証には適していないと心配しています。 –

関連する問題