Доступ к базе данных iOS SQL из Javascript - PullRequest
0 голосов
/ 13 декабря 2011

Я создаю приложение для iPhone / iPad для магазина приложений. То, что я хотел бы сделать, это создать его с помощью HTML5 / Javascript через UIWebView, чтобы впоследствии я мог использовать код HTML5 / Javascript и для веб-версии (это требование). Я хотел бы иметь автономную базу данных (SQLite), которая в основном поставляется с приложением - это будет содержимое для приложения, а файл .sqlite будет находиться в папке / Supporting Files / моего проекта XCode.

У меня вопрос: как я могу выполнять запросы и получать данные из этой базы данных из Javascript? Это возможно?

1 Ответ

1 голос
/ 13 декабря 2011

Вам придется построить свой собственный мост или использовать одну из множества основанных на HTML каркасов приложений, доступных для iOS ( PhoneGap , Appcelerator и т. Д.).

Если вы хотите пойти по пути строительства собственного моста, вам следует проверить UIWebView s -stringByEvaluatingJavaScriptFromString: и комбинацию UIWebView '-loadRequest и UIWebViewDelegate webView: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>

Тогда ваш делегат веб-просмотраможет захватить клик там:

- (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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...