首页 > 其他分享 >ios 自制Framework 获取指定bundle并读取里面的资源

ios 自制Framework 获取指定bundle并读取里面的资源

时间:2023-08-07 11:11:06浏览次数:42  
标签:Framework NSBundle ios bundle 访问 framework 资源

原文地址:https://zhanglei.blog.csdn.net/article/details/121673288

目录

一、前言

应用中某些模块需要组件化,组件化后的工程最后会做二进制化处理,打包成.framework文件。 今天简单聊一下在主工程或其他组件中是如何访问自制组件.framework关联的bundle资源文件。

二、访问应用资源

我们知道苹果应用是基于沙盒机制, 打包生成.ipa后的资源会被放到沙盒的根目录下。通常在主工程中我们是这样访问资源的:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"plist"];

没错,我们访问主工程下的资源使用的是

NSBundle *mainBundle =  [NSBundle mainBundle];

但如果将自制framework中的资源单独放到framework中打包时, framework中的代码在访问时则不能再使用上面的代码获取资源。

三、Framework中的资源存放

图片是应用中最常用的资源了, 在主工程下我们一般会把图片资源放到Asset文件束里面。 但在自制的Framework中我们如何来管理这些资源呢 ?

通常的做法是自制一个framework用到的.bundle文件。 操作步骤一般是:

  • 创建一个文件目录
  • 将资源文件放到该目录下
  • 重命名文件目录时添加.bundle的扩展名

这时系统会弹出一个提示:
在这里插入图片描述
点击“添加”按钮,就可以转成.bundle文件束。再将此文件拖动到framework工程中即可。

四、访问Framework中指定的bundle

假设自制Framework中存在一个MyProject.bundle文件,并读取此文件中的plist 资源:

- (void)loadPlistPath:(NSString *)path {
    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"MyProject" ofType:@"bundle"]];
    NSString *plistPath = [bundle pathForResource:@"fileName" ofType:@"fileType"];
}

五、访问bundle中的资源

六、建议Framework与bundle分开存放

更多内容详见:https://zhanglei.blog.csdn.net/article/details/121673288

标签:Framework,NSBundle,ios,bundle,访问,framework,资源
From: https://www.cnblogs.com/reyzhang/p/17610912.html

相关文章

  • 使用Entity Framework Core进行数据库操作
    当使用EntityFrameworkCore(EFCore)进行数据库操作时,你需要首先设置数据库上下文(DbContext),定义实体类(Entity),然后通过上下文来执行CRUD(创建、读取、更新和删除)操作。下面是一个简单的示例,演示如何使用EFCore进行数据库操作。安装EFCoreNuGet包:首先,你需要在项目中安装Entity......
  • Flutter开发之——IOS通信MethodChannel
     https://blog.csdn.net/Calvin_zhou/article/details/119042778 开始我新建的纯flutter项目,在研究flutter与原生交互时,按照上面代码操作后,报错UnhandledException:MissingPluginException(NoimplementationfoundformethodsendDataonchannelcom.example.flutteri......
  • Flutter开发之——iOS原生项目导入Flutter
     https://blog.csdn.net/Calvin_zhou/article/details/118926285Flutter开发之——IOS启动Flutterhttps://blog.csdn.net/Calvin_zhou/article/details/118958119 ......
  • Cannot resolve org.springframework.boot:spring-boot-starter-parent:2.4.3
    环境IDEA:2020-1-3MAVEN:3.6.2Spring-boog:2.3.4问题描述在pom.xml中写入所需依赖后,通过MAVEN加载依赖无法完成,报错异常信息Cannotresolveorg.springframework.boot:spring-boot-starter-parent:2.4.3问题原因应该是本地仓库中有之前由于网速不好未下载完成的文件,M......
  • axios介绍
    1. axios介绍   42axios是一个基于 promise 的 HTTP 库,可在浏览器和 node.js 中。1.1 特性:  42o 从浏览器中创建 XMLHttpRequesto 从 node.js 发出 http 请求o 支持 Promise APIo 拦截请求和响应o 转换请求和响应数据o 取消请求o 自动转换JSON数据o 客户端支持......
  • vue-table-width-grid 以及axios下载时报错
    importVuefrom'vue'importAppfrom'./App.vue'importrouterfrom'./router'importstorefrom'./store'//导入字体图标import'./assets/fonts/iconfont.css'importElementUIfrom'element-ui'impor......
  • Mapping iostat to the node exporter’s node_disk_* metrics
    参考:https://www.robustperception.io/mapping-iostat-to-the-node-exporters-node_disk_-metrics/ Thenodeexporterandtoolslikeiostatandsarusethesamecoredata,buthowdotheyrelatetoeachother? Prometheusmetricnamestendtotieprettydirect......
  • 探索ASP.NET Framework WebAPI的简介与应用
    一、什么是WebAPI?1.1-什么是WebAPI?WebAPI是一种用开发系统接口、设备接口API的技术,基于Http协议,请求和返回格式默认是Json格式。比WCF简单、更通用;比WebService更节省流量,更简洁。1.2-WebAPI的特点?Action方法直接返回对象,专注于数据更符合Restful的风格有利于独立于IIS部署Action可......
  • 探索ASP.NET Framework WebAPI的简介与应用
    一、什么是WebAPI?1.1-什么是WebAPI?WebAPI是一种用开发系统接口、设备接口API的技术,基于Http协议,请求和返回格式默认是Json格式。比WCF简单、更通用;比WebService更节省流量,更简洁。1.2-WebAPI的特点?Action方法直接返回对象,专注于数据更符合Restful的风格有利于独立于IIS部......
  • VMware ESXi 7.0 U3n macOS Unlocker & OEM BIOS (标准版和厂商定制版) 2023年8月更新
    VMwareESXi7.0U3nmacOSUnlocker&OEMBIOS(标准版和厂商定制版)2023年8月更新ESXi7.0标准版和Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)定制版镜像请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-oem/,查看最新版。原创作品,转......