Могу ли я открыть клиентскую базу данных HTML5 через приложение для iPhone (target-C)? - PullRequest
2 голосов
/ 31 марта 2010

Я использую UIWebView в обычном приложении Objective-C для iPhone. Веб-страницы, отображаемые в UIWebView, пишут в клиентскую базу данных SQL на HTML5 через javascript. Я хотел бы открыть эту базу данных для чтения и записи из приложения для iPhone. Это возможно? и если да, то как мне найти базу данных и можно ли использовать платформу SQLite для их открытия?

Ответы [ 4 ]

2 голосов
/ 29 октября 2013

Базы данных SQLite, используемые экземпляром UIWebView WebKit, фактически находятся в <Application_Home>/Library/WebKit/LocalStorage/file__0/, например, 0000000000000001.db.

2 голосов
/ 01 апреля 2010

Я не думаю, что это разоблачено таким образом.

Во-первых, я не думаю, что UIWebView s будет иметь клиентскую базу данных, которая сохраняется в течение нескольких сеансов (хотя, возможно, я ее не тестировал). И во-вторых, это, конечно, не дает вам прямого доступа к самому файлу базы данных SQLite.

Лучше всего было бы вызвать javascript в веб-просмотр с

[webView stringByEvaluatingJavascriptFromString:@"mySqlQueryingFunction()"]

предоставление Javascript доступа к базе данных для вас.

0 голосов
/ 06 октября 2010

Старый вопрос, но я нашел его, пока гуглял по теме, и подумал, что обновлю его решением.

Базы данных localstorage являются базами данных sqlite и хранятся в / Library / WebKit / LocalStorage, а база данных для вашего приложения будет выглядеть как file__0.localstorage

Вы можете получить путь к файлу примерно так:

NSString * fullPath = [NSHomeDirectory () stringByAppendingPathComponent: @ "Library / WebKit / LocalStorage / file__0.localstorage"];

Надеюсь, это поможет всем, кто занимается этим.

0 голосов
/ 31 марта 2010

База данных HTML5 находится вне песочницы вашего приложения и не может быть доступна напрямую. Если у вас есть контроль над веб-страницами, отображаемыми в UIWebView, вы можете создать относительно простой мост javascript для извлечения содержимого и вставки его в собственную базу данных SQLite.

...