使用xcode将sample.db文件从app的文档目录复制到本地safari / databases目录

时间:2012-05-08 11:11:07

标签: iphone xcode ios5

我在我的应用程序中开发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 任何其他方法来解决这个问题。

3 个答案:

答案 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"]; 

你可以试试这个。