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) アプリのドキュメント ディレクトリにある既存の sqlite3 データベースに JavaScript を接続したい。2) ただし、OpenDatabase() メソッドは常に safari/da​​tabases ディレクトリを指します

3)OpenDatabase()メソッドでドキュメントディレクトリを指すことができる方法を取得するか、アプリのドキュメントディレクトリからSafari /データベースにsqlite3データベースのコピーを保持する他の方法を取得します

または、この問題を解決する他の方法。

4

3 に答える 3

2

アプリのサンドボックスの外に書き込み許可はありません。これはシミュレータでは機能するかもしれませんが、デバイスでは機能しません。

別の解決策を見つける必要があります。1つの方法は、ViewControllerからWebビューの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 に答える