2012-05-08 42 views
0

即時通訊在我的應用程序中開發uiwebview。 此UIWebView顯示HTML5頁面,並具有訪問本地數據庫並顯示菜單列表的JavaScript。使用xcode將sample.db文件從應用程序的文檔目錄複製到本地safari/databases目錄

問題是我需要從應用程序的文檔目錄中複製這個數據庫,並將其粘貼到safari/databases文件夾..所以我的JavaScript文件可以訪問這個數據庫並顯示文件列表。

但是從文件夾複製文件到Safari瀏覽器/數據庫文件夾 這裏沒有成功是我的代碼:

NSString *databasepath=[NSString stringWithFormat:@"~/Library/%@/%@",@"safari",@"databases"]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSError *error; 

NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"sfa.db" ofType:nil]; 
[fileManager copyItemAtPath:resourcePath toPath:databasepath error:&error]; 

任何幫助將b讚賞。 在此先感謝。


感謝您的所有回覆。雖然它不能解決我的問題。

1)我想javascript連接位於我的應用程序的文檔目錄中的現有sqlite3數據庫。 2),但的openDatabase()方法總是指向Safari瀏覽器/數據庫目錄

3)無論我得到了一種B,能夠在的openDatabase(點文檔目錄)方法 OR 一些其他的方式保存副本我的sqlite3數據庫從我的應用程序的文檔目錄到Safari /數據庫

或 任何其他方式來解決此問題。

回答

0

我使用功能stringByEvaluatingJavaScriptFromString 這裏解決我的問題是我的代碼:

在我的模型

-(void)webViewDidFinishLoad:(UIWebView *)webView { 
//getMenuItems is fetches items from database 
    [self getMenuItems]; 
//array items converted to string seperated by "," 
    NSString *string = [[arr valueForKey:@"description"] componentsJoinedByString:@","]; 

//load is javascript function 
    NSString *str=[NSString stringWithFormat:@"load('%@');",string]; 

[web stringByEvaluatingJavaScriptFromString:str]; 
} 

在我的HTML

function load(example_array){ 
     var example_array=example_array.split(","); 
    var select = document.getElementById("ddlMenu"); 

     for(i=0;i<=example_array.length-1;i++) { 
     select.options[select.options.length] = new Option(example_array[i], i); 
    } 

    } 
2

您的應用程序沙箱外沒有寫入權限。雖然這可能在模擬器上工作,但它不會在設備上。

您需要找到不同的解決方案。一種方式是打電話給在WebView中的JavaScript函數從您的視圖控制器來複制數據:-(void) stringByEvaluatingJavaScriptFromString

+0

請對一個小細節我怎麼能使用 - (void)stringByEvaluatingJavaScriptFromString將數據從應用程序的文檔目錄複製到Safari /數據庫 – Sangeeta

+0

您可以例如將base64編碼的文件數據傳遞給一個javascript函數。您可以使用該功能執行任何您喜歡的JavaScript。這是如何工作的將取決於數據庫的複雜性和可用的javascript方法。 – FelixLam

-1
NSString * returnValue = [WebView stringByEvaluatingJavaScriptFromString:@"SOME JAVASCRIPT"]; 

你可以試試這個。

相關問題