2011-12-21 37 views
3

我在程序工作中有一個webview的本地存儲,但它總是在下一次程序運行開始時被刪除。我檢查了這個文件,它在程序運行後仍然存在,但在下一個文件開始時,它將其清除。你如何設置本地存儲,使其在程序運行中持續存在

這裏是我的代碼:

- (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 ..我應該在下面閱讀您的免責聲明。以下兩個鏈接可能仍然對您有用:http://stackoverflow.com/questions/2640724 http://stackoverflow.com/questions/4625484/how-to-get-localstorage-to-work-in-a -webview-in-xcode – abelito 2011-12-31 10:55:48

+0

我在發佈之前檢查了這兩個,但無法找到有用的信息。我知道localstorage應該是可能的,因爲它只是一個嵌入式webkit。 – NycCompSci 2012-01-04 03:23:08

+0

這對我工作在10.7和Xcode 4.3.3:http://stackoverflow.com/questions/10609644/localstorage-not-persisting-in-osx-app-xcode-4-3 – endemic 2012-07-04 18:39:22

回答

0

看看上WebPreferences的文檔,則初始化它使用的WebView每次的WebPreferences預WebView中,導致你創建一個新WebPreferences每次打開應用程序時。如果你想保持它的持久性,你應該用initWithIdentifier來初始化它:「indentifer」。

WebPreferences Class Reference

+0

這似乎是它可能是原因,但如果你沒有得到webview的偏好對象,你如何設置偏好? – NycCompSci 2012-01-04 02:20:32

+0

在initWithIdentifier下仔細閱讀文檔,通過向您的WebView對象發送setPreferencesIdentifier:消息來設置首選項標識符。 – Allen 2012-01-04 02:29:12

+0

這種方法似乎不影響擦除,我嘗試了下面的代碼:http://pastie.org/3122277 – NycCompSci 2012-01-04 02:41:39

0

我敢肯定你知道使用私有的API的風險。

也就是說,在那裏放一些斷點,看看緩存在什麼時候被吹走了。嘗試將數據庫移動到該行之前的臨時位置,然後立即將其恢復。

相關問題