我不想花时间学习Obj-C.我花了7年多的时间做网络应用程序编程.难道不应该有办法使用WebView,只需在javascript中编写整个应用程序,从项目资源中提取文件?
搜索后我找到了答案.这就是我所做的:
在XCode中创建一个新项目.我想我使用了基于视图的应用程序.
将WebView对象拖到界面上并调整大小.
在viewDidLoad方法中,在WebViewController.m(或类似命名的文件,取决于视图的名称)内部:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]; NSData *htmlData = [NSData dataWithContentsOfFile:filePath]; if (htmlData) { NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle bundlePath]; NSString *fullPath = [NSBundle pathForResource:@"index" ofType:@"html" inDirectory:path]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fullPath]]]; }
现在,您作为项目资源添加的任何文件都可以在您的Web应用程序中使用.我有一个index.html文件,包括javascript和css以及没有问题的图像文件.到目前为止,我发现的唯一限制是我无法创建新文件夹,因此所有文件都会混淆资源文件夹.
技巧:确保您已将文件作为资源添加到XCode中,否则该文件将不可用.我一直在XCode中添加一个空文件,然后在finder中将我的文件拖到顶部.这一直在为我工作.
注意:我意识到Obj-C一定不难学.但是因为我已经在JS中存在这个应用程序并且我知道它在Safari中有效,所以对我来说这是一个更快的开发周期.有一天,我确信我必须打破并学习Obj-C.
我发现其他一些有用的资源:
从javascript调用Obj-C:从javascript 调用objective-c
从Obj-C调用javascript:针对网络黑客的iphone应用开发
从应用程序包中读取文件:uiwebview
查看http://www.phonegap.com上的 PhoneGap,他们声称它允许您将JavaScript,HTML和CSS嵌入到原生iPhone应用程序中.
对于那些在iPhone 2.1(可能是2.0)上执行此操作的人,您不需要为本地数据存储创建任何特殊服务.MobileSafari似乎支持HTML5/WHATWG SQL数据库API.这与最新版本的桌面Safari和Firefox支持的API相同.
如果您使用的是Dojo或ExtJS等提供存储抽象的工具包,那么您的代码应该适用于任何现代浏览器,包括MobileSafari.
要测试,请在iPhone上打开http://robertsanders.name/dev/stackoverflow/html5.html.
如果您打开该页面然后查看越狱iPhone的文件系统,您应该在/ private/var/mobile/Library/WebKit/Databases /中的某处看到一个数据库.甚至还有一个Web打开的DB目录.
root#sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite版本3.5.9输入".help"作为说明
sqlite> .databases seq名称文件
0 main /private/var/mobile/Library/WebKit/Databases/Databases.db
sqlite> .tables
数据库起源
sqlite> select*from Databases;
1 | http_robertsanders.name_0 | NoteTest |数据库| API示例| 20000 | 0000000000000001.db
sqlite> select*from Origins;
http_robertsanders.name_0 | 5242880