[[NSBundle mainBundle]pathForResource..取值为空

本文介绍了一种解决iOS应用中图片资源加载失败的方法。通过将图片作为实体文件添加,并调整NSBundle的资源搜索路径,成功解决了图片加载问题。

转载至:http://blog.csdn.net/zww1984774346/article/details/78128148

最近遇到一个奇葩的问题,使用[[NSBundle mainBundle]pathForResource:imageName ofType:@"png"];获取图片一直取不到图片,简直晕死,一直好用的方法突然不行了,只能另寻它法了。

这里提出一个解决方案仅供参考。 
1、以实体文件的方式拖入图片文件夹 
这里写图片描述

2、以实体文件的方式查找

 NSString *path  = [[NSBundle mainBundle]pathForResource:imageName ofType:@"png" inDirectory:@"images"];
 
  • 1

如果以上方式还无法正确读取到文件可以继续下一步:

3、设置Bundle Resource, 选中工程->Build Phases->Copy Bundle Resources 
这里写图片描述

再次尝试应该就阔以啦。

### 使用 NSBundle 获取主 Bundle 的路径并转换为 NSURL 在 iOS 开发中,可以通过 `NSBundle` 类来访问应用程序的主要包(即 main bundle)。为了获取主 bundle 并将其路径转换成 `NSURL` 对象,可以按照如下方式操作: ```objc // 获取主bundle实例 NSBundle *mainBundle = [NSBundle mainBundle]; // 将主bundle的路径转化为NSURL对象 NSURL *bundleURL = [mainBundle.bundleURL]; ``` 上述代码片段展示了如何通过调用 `[NSBundle mainBundle]` 方法获得当前应用的主 bundle 实例[^1]。接着利用该实例的方法 `.bundleURL` 来得到表示此 bundle 文件夹位置的 URL。 如果需要进一步指定资源名称和扩展名以构建特定资源项 (如图片或其他类型的文件) 的 URL,则可采用下面的方式: ```objc NSString *resourceName = @"exampleResource"; // 替换成实际资源的名字 NSString *fileType = @"type"; // 替换成实际文件类型, 如 png,jpg等 NSURL *resourceURL = [mainBundle URLForResource:resourceName withExtension:fileType]; ``` 这段代码说明了当想要定位到某个具体资源时的操作方法[^2]。这里使用的是 `-URLForResource:withExtension:` 接口,它允许传入具体的资源名字以及其扩展名参数从而精确指向目标资源的位置。 对于加载 nib 文件的情况,也可以基于同样的思路先取得主 bundle 后再执行相应处理逻辑[^3]: ```objc NSArray *nibs = [mainBundle loadNibNamed:@"MyTest" owner:self options:nil]; UIView *viewFromNib = nibs.firstObject; ``` 以上就是关于如何在 iOS 应用程序里借助于 `NSBundle` 和 `NSURL` 进行资源管理的一些基本介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值