博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSBundle pathForResource取不到值问题
阅读量:5130 次
发布时间:2019-06-13

本文共 1321 字,大约阅读时间需要 4 分钟。

NSBundle pathForResource取不到值问题

一、问题描述:

初学UI,照着视频敲汤姆猫项目,做到加载图片(含jpg格式)时有两种方法可以实现一种是有缓存,一种是没有缓存。代码实现如下:

1.imageNamed: 有缓存(传入文件名)

 

 

UIImage *image = [UIImage imageNamed:filename]; // imageNamed 方法 直接传文件名,有缓存

 

2.imageWithContentsOfFile:没有缓存(传入文件的全路径):

 

// 获取文件全路径:        NSBundle *bundle = [NSBundle mainBundle];        NSString *path = [bundle pathForResource:filename ofType:nil]; // 传入文件名作为参数就可以加载全路径;//        NSString *path = [bundle pathForResource:@"imageDate.plist" ofType:nil]; 此代码等同上句,左边放文件名,右边放扩展名或者将plist写在后面                UIImage *image = [UIImage imageWithContentsOfFile:path]; // ~File 传文件全路径,无缓存;
使用第一种方法运行并点击控件按钮无错误;使用第二种方法点击运行无报错,但是点击控件按钮时报错如下:

 

 

 

二、问题解决历程:

1、打断点调试,发现第二种方法获取的path值为空,说明没有获取到路径。
2、将图片文件夹分别拖入Assets.xcassets和Supporting Files 文件都不写。
3、请教了朋友无解,百度谷歌也未能成功,尝试了下面的添加文件方式,也未果;
即点击项目文件——Build phrase ——Copy Bundle Resources——直接添加图片文件夹也不可以。
3、最后翻看视频发现是因为我托图片文件夹的时候勾选的选项不正确,原来往Supportint Files 直接拖的如图1所示,并且默认就是图一所示情况;后来重新勾选后如图二所示,运行正常,但是存在原来UImageview 的背景图片不能正常显示问题,这时需要将背景图片重新添加后缀:~.jpg才可以。(因为图片是jpg文件格式,可能出现本博客所描述问题也跟Xcode不能直接显示jpg图片有关系,有待考察)。

图一:Xcode默认的文件勾选框

图二:修改后的文件勾选方式

三、分析与总结:

碰到问题解决问题总会有收获的。过程虽然漫长、煎熬,但是记录下来下次就会倍加小心,俗话说,吃一堑,长一智。在我谷歌过程中发现国外的Stack Overflow 论坛上也有人遇到过此类问题: http://stackoverflow.com/questions/3949368/nsbundle-pathforresource-is-null 。

 

转载于:https://www.cnblogs.com/wangmaster/p/iOS.html

你可能感兴趣的文章
免费的大数据学习资料,这一份就足够
查看>>
clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
查看>>
MySQL(一)
查看>>
企业级应用与互联网应用的区别
查看>>
steelray project viewer
查看>>
itext jsp页面打印
查看>>
HTTP之报文
查看>>
Perl正则表达式匹配
查看>>
Git
查看>>
DB Change
查看>>
nginx --rhel6.5
查看>>
Eclipse Python插件 PyDev
查看>>
selenium+python3模拟键盘实现粘贴、复制
查看>>
第一篇博客
查看>>
typeof与instanceof的区别
查看>>
网站搭建(一)
查看>>
SDWebImage源码解读之SDWebImageDownloaderOperation
查看>>
elastaticsearch
查看>>
postgreSQL 简单命令操作
查看>>
Spring JDBCTemplate
查看>>