今天在做iOS加載本地H5時(shí),發(fā)現(xiàn)自己不會(huì)取工程中的文件,真是頭疼呀!于是研究了下bundle的用法,可算解決了。其中主要借鑒下面這篇文章:
https://blog.csdn.net/jingfa1993/article/details/79758849
看了之后有個(gè)小小的感悟:
? ? 1、我們的工程其本身就是在一個(gè)bundle之下,叫做mainBundle,swift中獲取方式就是Bundle.main。
? ? 2、Bundle下可以新建有文件、文件夾。(猜測(cè)可能還可以有bundle,因?yàn)閙ainbundle是一個(gè)bundle,我們可以在其下新建一個(gè)bundle)
? ? 3、如果有大量的外部文件最好放在Bundle中;
開(kāi)發(fā)中需要解決的文件:
? ? 1、如果把外部文件導(dǎo)入工程中?
? ? 2、怎樣獲取到我們想要的文件;
首先我們來(lái)看下如何導(dǎo)入外部文件到工程中?主要針對(duì)的是多級(jí)目錄的文件夾

1、重點(diǎn)講一下是選“Create groups”還是“Create folder references”?Groups的概念是一個(gè)“分組”,而不是文件夾,他其實(shí)對(duì)文件所在位置沒(méi)什么要求,你可以看做是完全為了讓我們開(kāi)發(fā)者看得方便而分的小組,其實(shí)編譯器不管這個(gè)的,故iOS要求一個(gè)工程下文件名不能相同。而選擇“Create folder references”,在iOS看來(lái),這不是一個(gè)代碼文件,我不會(huì)對(duì)它進(jìn)行編譯。
明白了兩者之間的區(qū)別,就很容易選擇了,如果我們引用的是代碼,需要編譯的,就選“Create groups”,如果是資源文件,不用編譯就選“Create folder references”,groups是黃色的文件夾,references是藍(lán)色的文件夾。
2、自定義bundle的使用。
自定義bundle可以讓工程看起來(lái)更舒服,畢竟這些都是資源文件,我們放在bundle里面是不是更好?
如何創(chuàng)建bundle呢:如圖new file->起個(gè)名字->完成

如果你用Bundle導(dǎo)入資源的話(huà),就不需要問(wèn)“Create groups”還是“Create folder references”,它里面放的就是資源文件,不存在還要編譯
講完了如何導(dǎo)入資源文件,接下來(lái)講講如何獲取資源文件

1、獲取mainBundle:Bundle.main(心里知道就行)
2、獲取到自定義bundle的路徑
????let htmlBundlePath =Bundle.main.path(forResource:"HTMLBundle", ofType:"bundle")
? ? 代碼解讀:獲取mainbundle下名字為HTMLBundle、類(lèi)型為bundle的文件的路徑
3、得到自定義bundle:
? ? let htmlBundle =Bundle.init(path: htmlBundlePath)
4、從bundle中取出想要的文件:

? ? 如我要獲取到budle下xuqiu文件夾下的add文件夾下的fwxm.html文件:
? ? 先獲取文件路徑
? ??let path = htmlBundle.path(forResource:"fwxm", ofType:"html", inDirectory:"xuqiu/add"
? ? 在通過(guò)路徑獲取文件:(根據(jù)文件不同,獲取方式不同,下面展示html的獲取方式)
? ? let url =?URL.init(fileURLWithPath: path)
????view.loadFileURL(url, allowingReadAccessTo:url)