2011-12-13 24 views
0

我正在爲應用商店創建iPhone/iPad應用程序。我想要做的就是通過UIWebView使用HTML5/Javascript創建它,以便稍後可以使用HTML5/Javascript代碼用於Web版本(這是一項要求)。我希望有一個基本上與應用程序一起發佈的脫機數據庫(SQLite) - 這將是應用程序的內容,而.sqlite文件將存在於我的XCode項目的/ Supporting Files /文件夾中。從iOS使用iOS SQL數據庫訪問

我的問題是,我如何運行查詢並從Javascript數據庫中獲取數據?這可能嗎?

回答

1

您將不得不建立自己的橋樑或使用適用於iOS的許多基於HTML的應用程序框架之一(PhoneGap,Appcelerator等)。

如果你想下去構建自己橋的路徑,你應該檢查出UIWebView-stringByEvaluatingJavaScriptFromString:UIWebView的組合的-loadRequestUIWebViewDelegatewebView:shouldStartLoadWithRequest:navigationType:使用自定義的協議(例如,com.mycompany.myapp.1.0://),其你在委託方法中檢查。

編輯:

下面是一些示例代碼:

你的HTML應該是這樣的:

<a href="myapp://doQuery?arg1=a&arg2=b">Do Query</a> 

或:

<a href="#" onclick:"javascript:doQuery();">Do Query</a> 
<script> 
    function doQuery() { 
    window.location = "myapp://doQuery"; 
    } 
</script> 

那麼你的WebView委託可以通過以下方式捕獲點擊:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)req (UIWebViewNavigationType)navType { 
    if ([[req URL] scheme] == @"myapp:") { 
    if ([[req URL] host] == @"doQuery") { 
     // Do the query here. 
     [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"latestResult = %@; queryReturned(latestResult);", queryResultAsJSON]]; 
    } else if ([[req URL] host] == @"doSomethingElse") { 
     // Do something else. 
    } 
    return NO; 
    } 
    return YES; 
} 
+0

這有助於 - 雖然我不確定這意味着什麼建立我自己的橋樑 - 我不介意這樣做,如果我能從中獲得一定程度的定製。你有鏈接的教程或任何更好地解釋這個?另外,你是否確實知道我可以運行一個查詢並將這些數據作爲JavaScript調用的JavaScript層? –

+0

非常感謝,這更清晰。 –