2011-12-21 19 views
3

プログラム内でwebviewのlocalstorageを使用していますが、次のプログラムの実行開始時に常に消されます。私はファイルをチェックし、プログラムが実行された後も持続しますが、次の開始時にはそれを拭き取ります。任意の助けをいただければ幸いですどのようにlocalstorageを設定してプログラムの実行中も持続するようにします

- (void)awakeFromNib { 
    WebPreferences *prefs = [webView preferences]; 
    [prefs _setLocalStorageDatabasePath:@"~/Library/Application Support/MyApp"]; 
    [prefs setDatabasesEnabled:YES]; 
    [prefs setLocalStorageEnabled:YES]; 

    NSString *resourcesPath = [[NSBundle mainBundle] resourcePath]; 
    NSString *htmlPath = [resourcesPath stringByAppendingString:@"/htdocs/index.html"]; 
    [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:htmlPath]]]; 

    [window setDelegate:self]; 
} 

は、ここに私のコードです!ありがとう

+0

これはiOS用ではありません。下記の免責事項を読んでください。次の2つのリンクは、まだあなたの役に立つかもしれません:http://stackoverflow.com/questions/2640724 http://stackoverflow.com/questions/4625484/how-to-get-localstorage-to-work-in-a -webview-in-xcode – abelito

+0

投稿する前にこれらの2つを確認しましたが、役に立つ情報は見つかりませんでした。 localstorageは組み込みのWebkitなので可能なはずです。 – NycCompSci

+0

これは10.7とXcode 4.3.3で私にとってうまくいった:http://stackoverflow.com/questions/10609644/localstorage-not-persisting-in-osx-app-xcode-4-3 – endemic

答えて

0

WebPreferencesのドキュメントを見ると、毎回WebViewが使用されます.WebPreferencesはWebViewの前にあり、アプリケーションを起動するたびに新しいWebPreferencesを作成します。永続性を維持したい場合は、initWithIdentifier: "indentifer"を使用して初期化する必要があります。

WebPreferences Class Reference

+0

これは、理由はありますが、webviewの設定オブジェクトを取得しないと、どのように設定を行いますか? – NycCompSci

+0

慎重に文書を読んで、initWithIdentifierの下で、あなたのWebViewオブジェクトにsetPreferencesIdentifier:メッセージを送信してプリファレンス識別子を設定します。 – Allen

+0

この方法は消去には影響しないようですが、次のコードを試しました:http://pastie.org/3122277 – NycCompSci

0

私はあなたがプライベートAPIを使用しての危険性を知っていると確信しています。

しかし、そこにいくつかのブレークポイントを置き、キャッシュが吹き飛ばされた場所を見てください。その行の直前の一時的な場所にデータベースを移動し、直後に戻してみてください。

関連する問題