【问题标题】:iOS SQL Database access from Javascript从 Javascript 访问 iOS SQL 数据库
【发布时间】:2012-01-19 11:11:21
【问题描述】:

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

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

【问题讨论】:

    标签: javascript iphone objective-c sqlite html


    【解决方案1】:

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

    如果你想走自己建桥的路,你应该看看UIWebView-stringByEvaluatingJavaScriptFromString:,以及UIWebView-loadRequestUIWebViewDelegate的组合@987654325 @ 使用您在委托方法中检查的自定义协议(例如,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;
    }
    

    【讨论】:

    • 这很有帮助——尽管我不确定建立自己的桥梁意味着什么——如果我能从中获得某种程度的定制,我不介意这样做。您是否有教程链接或任何可以更好地解释这一点的链接?另外,您确定我可以运行查询并将该数据放入 Javascript 层,如 Javascript 所要求的那样?
    猜你喜欢
    • 2012-08-18
    • 2011-05-12
    • 1970-01-01
    • 2021-12-03
    • 2011-09-11
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多