我在我的应用程序中开发uiwebview。 这个UIWebView显示HTML5页面,并有javascript访问本地数据库并显示菜单列表。
问题是我需要从app的文档目录中复制这个数据库并将其粘贴到safari / databases文件夹中。所以我的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 / databases目录
3)要么我能找到一种能够在OpenDatabase()方法中指向文档目录的方法 要么 另一种方法是将我的sqlite3数据库的副本从我的应用程序的文档目录保存到Safari /数据库
OR 任何其他方法来解决这个问题。
答案 0 :(得分:2)
您的应用程序沙箱之外没有写入权限。虽然这可能在模拟器上有效,但它不会在设备上。
您需要找到不同的解决方案。一种方法是从ViewController调用webview中的javascript函数来复制数据:-(void) stringByEvaluatingJavaScriptFromString
答案 1 :(得分: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 :(得分:-1)
NSString * returnValue = [WebView stringByEvaluatingJavaScriptFromString:@"SOME JAVASCRIPT"];
你可以试试这个。