• NSBundle pathForResource取不到值问题


    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 。


  • 相关阅读:
    OC
    OC
    OC
    OC
    OC
    Oracle wm_concat()函数
    字符串拼接
    easyui扩展数据表格点击加号拓展
    子tab里面新增tab(top.jQuery)
    combox datagrid重复请求问题
  • 原文地址:https://www.cnblogs.com/wangmaster/p/iOS.html
Copyright © 2020-2023  润新知