IOS-SDK开发

swift bundle的使用

2018-07-07  本文已影响197人  本帅不良

今天在做iOS加载本地H5时,发现自己不会取工程中的文件,真是头疼呀!于是研究了下bundle的用法,可算解决了。其中主要借鉴下面这篇文章:

https://blog.csdn.net/jingfa1993/article/details/79758849

看了之后有个小小的感悟:

    1、我们的工程其本身就是在一个bundle之下,叫做mainBundle,swift中获取方式就是Bundle.main。

    2、Bundle下可以新建有文件、文件夹。(猜测可能还可以有bundle,因为mainbundle是一个bundle,我们可以在其下新建一个bundle)

    3、如果有大量的外部文件最好放在Bundle中;

开发中需要解决的文件:

    1、如果把外部文件导入工程中?

    2、怎样获取到我们想要的文件;

首先我们来看下如何导入外部文件到工程中?主要针对的是多级目录的文件夹

导入弹框

1、重点讲一下是选“Create groups”还是“Create folder references”?Groups的概念是一个“分组”,而不是文件夹,他其实对文件所在位置没什么要求,你可以看做是完全为了让我们开发者看得方便而分的小组,其实编译器不管这个的,故iOS要求一个工程下文件名不能相同。而选择“Create folder references”,在iOS看来,这不是一个代码文件,我不会对它进行编译。

明白了两者之间的区别,就很容易选择了,如果我们引用的是代码,需要编译的,就选“Create groups”,如果是资源文件,不用编译就选“Create folder references”,groups是黄色的文件夹,references是蓝色的文件夹。

2、自定义bundle的使用。

自定义bundle可以让工程看起来更舒服,毕竟这些都是资源文件,我们放在bundle里面是不是更好?

如何创建bundle呢:如图new file->起个名字->完成

如果你用Bundle导入资源的话,就不需要问“Create groups”还是“Create folder references”,它里面放的就是资源文件,不存在还要编译

讲完了如何导入资源文件,接下来讲讲如何获取资源文件

1、获取mainBundle:Bundle.main(心里知道就行)

2、获取到自定义bundle的路径

    let htmlBundlePath =Bundle.main.path(forResource:"HTMLBundle", ofType:"bundle")

    代码解读:获取mainbundle下名字为HTMLBundle、类型为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"

    在通过路径获取文件:(根据文件不同,获取方式不同,下面展示html的获取方式)

    let url = URL.init(fileURLWithPath: path)

    view.loadFileURL(url, allowingReadAccessTo:url)

上一篇 下一篇

猜你喜欢

热点阅读