xcode

2012-05-08 1 views
0

私のアプリでuiwebviewを開発することを使用して、アプリケーションのドキュメントディレクトリからローカルサファリ/データベースディレクトリにsample.dbファイルをコピーします。 このUIWebViewはHTML5ページを表示し、ローカルdbにアクセスし、メニューのリストを表示するjavascriptを持っています。xcode

問題は、私はこのデータベースをアプリのドキュメントディレクトリからコピーしてsafari/databasesフォルダに貼り付ける必要があるということです。私のjavascriptファイルはこのdbにアクセスしてファイルのリストを表示できます。

しかし、ここでサファリ/データベース]フォルダ にドキュメントフォルダからファイルをコピーするには成功は私のコードではありません:

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メソッド()メソッドは常にサファリ/ databasesディレクトリに

3ポイント)のいずれか私は(OpenDatabaseメソッドでドキュメントディレクトリを向くことができるbに方法を取得)方法 OR コピーを保持するためにいくつかの他の方法私のアプリのドキュメントディレクトリからこの問題を解決するための他の方法

OR

サファリ/データベースへの私のsqlite3のデータベースの。

答えて

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

あなたのアプリのサンドボックスの外に書き込み権限がありません。これはシミュレータ上で動作するかもしれませんが、デバイス上にはありません。

あなたは別の解決策を見つける必要があります。一つの方法は、データをコピーするためにあなたのViewControllerからのWebView内のJavaScript関数を呼び出すことがあるかもしれない:-(void) stringByEvaluatingJavaScriptFromString

+0

どのようにすることができますについて少し詳細を教えてくださいアプリケーションのドキュメントディレクトリからSafari/DatabasesにデータをコピーするためのstringByEvaluatingJavaScriptFromStringを使用する - (void) – Sangeeta

+0

たとえばbase64でエンコードされたファイルデータをjavascript関数に渡します。あなたは、その機能を使って好きなjavascriptを実行できます。どのくらい正確に動作するかは、データベースの複雑さと利用可能なjavascriptの方法によって決まります。 – FelixLam

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

あなたは、このいずれかを試すことができます。

関連する問題