PS:记录自己工作学习中的一些知识;
1、关于方法
- (nullable NSString *)pathForResource:(nullable NSString *)name ofType:(nullable NSString *)ext;
返回nil 问题;
例如:
// 加载test.html
NSString * htmlPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"];
// htmlPath返回nil
/*
排错方法:
NSLog(@"[NSBundle mainBundle] : \n%@ \n",[NSBundle mainBundle]);
查看
/Users/admin/Library/Developer/CoreSimulator/Devices/051CFF8B-B7A4-49E0-B25C-8AE0536B0307/data/Containers/Bundle/Application/F2FEBC5F-0056-426E-86E3-CA542922A0FE/TestXX.app目录下是否存在test.html
如果不存在则在项目----> TARGECTS---->Build Phases---->Cpoy Bundle Resources中添加
*/
2、关于UIWebView 加载本地html、js、css
- 引入HTML文件到项目中
Creat groups
1、Creat groups引入的文件夹为黄色的;
2、我们可以在项目中右键手动New Group 但是新添加的文件夹并不是真的存在于项目目录中,我们可以Show in Finder来查看项目文件结构,发现文件目录中并没有新建的文件夹.
但是从外部引进来的group并不会如此,它在项目目录汇中是存在真实目录的,这些文件是会被编译;
3、因此Create groups的方式添加到工程中,则不管加入项目的文件的目录结构如何,在APP中都可以通过mainBundlePath/filename这样结构来访问文件;
Creat folder reference
1、Creat folder reference在引入的文件夹为蓝色的;
2、只是单纯的创建了引用,文件夹内部的原有文件层次架构并不会改变,所以在使用的时候需要通过mainBundlePath/Path/filename这样的路径来访问文件.所以这种方式比较适合我们;
3、这样的好处还有一个就是,比如我们login.html中<script src="js/appcan.js"></script>这样的相对路径,都可以不需要修改;
所以就像这样的目录结构可以这样写:
NSString *mainBundlePath = [[NSBundle mainBundle] bundlePath];
NSString *basePath = [NSString stringWithFormat:@"%@/phone",mainBundlePath];
NSURL *baseUrl = [NSURL fileURLWithPath:basePath isDirectory:YES];
NSString *htmlPath = [NSString stringWithFormat:@"%@/login.html",basePath];
NSString *htmlString = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil];
[self.webView loadHTMLString:htmlString baseURL:baseUrl];