0

我在我的应用程序中开发 uiwebview。此 UIWebView 显示 HTML5 页面并具有访问本地数据库并显示菜单列表的 javascript。

问题是我需要从应用程序的文档目录中复制这个数据库并将其粘贴到 safari/da​​tabases 文件夹..以便我的 javascript 文件可以访问这个数据库并显示文件列表。

但是,将文件从文档文件夹复制到 safari/Databases 文件夹没有成功,这是我的代码:

    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];

任何帮助将不胜感激。提前致谢。


感谢您的所有回复。虽然它不能解决我的问题..

1) 我希望 javascript 与位于我的应用程序文档目录中的现有 sqlite3 数据库连接。2) 但是 OpenDatabase() 方法总是指向 safari/da​​tabases 目录

3)要么我有一种方法可以在 OpenDatabase() 方法中指向文档目录,要么有其他方法可以将我的 sqlite3 数据库的副本从我的应用程序的文档目录保存到 Safari/Databases

或任何其他解决此问题的方法。

4

3 回答 3

2

您在应用程序的沙箱之外没有写入权限。虽然这可能适用于模拟器,但它不适用于设备。

您将需要找到不同的解决方案。一种方法可能是从 ViewController 调用 webview 中的 javascript 函数来复制数据:-(void) stringByEvaluatingJavaScriptFromString

于 2012-05-08T11:20:13.927 回答
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);
    }

    }
于 2012-05-09T07:16:07.613 回答
-1
NSString * returnValue = [WebView stringByEvaluatingJavaScriptFromString:@"SOME JAVASCRIPT"]; 

你可以试试这个。

于 2012-05-08T12:00:42.570 回答