从Javascript访问iOS SQL数据库

时间:2011-12-13 15:18:18

标签: javascript iphone objective-c sqlite html5

我正在为应用商店创建iPhone / iPad应用。我想要做的是通过UIWebView使用HTML5 / Javascript创建它,以便我以后可以使用HTML5 / Javascript代码用于Web版本(这是一项要求)。我想有一个离线数据库(SQLite)基本上附带应用程序 - 这将是应用程序的内容,.sqlite文件将存在于我的XCode项目的/ Supporting Files /文件夹中。

我的问题是,如何从Javascript运行查询并从此数据库中获取数据?这可能吗?

1 个答案:

答案 0 :(得分:1)

您必须构建自己的网桥或使用可用于iOS的许多基于HTML的应用框架之一(PhoneGapAppcelerator等)。

如果您想要建立自己的桥梁,您应该查看UIWebView的{​​{3}}以及UIWebView的{​​{3}}的组合和UIWebViewDelegate的{​​{3}}使用您在委托方法中检查的自定义协议(例如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;
}