在开发IOS应用时,我们经常需要将素材分类,并放入相应地子目录中。

在开发代码时,需要访问这些素材时,就需要获取对应的子目录路径。那么如何获取呢?

获取应用路径

首先,要找到应用所在的路径。

NSString *bundlePath = [[NSBundle mainBundle] bundlePath];

获取子目录路径

假设有一个子目录名字叫做images,那么可以按照下面的方法获取其路径。

NSString *imagePath = [bundlePath stringByAppendingPathComponent:@"images"];

找到这个路径就OK了,从这里开始,你就可以为所欲为了,比如遍历子文件夹中所欲的文件等。

别高兴太早

即使有了上面的代码,你也不一定会成功,为什么呢?因为IOS应用默认的文件组织结构是平坦(flat)模式,也就是没有子目录!你在Xcode中可以看到很多目录,但是生成的文件中却没有子目录。导致上面的代码失效。怎么办?

  1. 将你要添加的子目录拖拽到XCode中(或者右键单击工程选择-添加文件到工程),
  2. 在弹出的对话框中要选择 "Create Folder References for any added folders",切记!

如果我的子文件夹已经添加到了工程中,但是没有选择"Create Folder References for any added folders"怎么办?

没关系,直接删除他,删除的时候选择Remove References. 不要Move to Trash,然后重新添加一按照上面的步骤添加一次即可。

另外一个方法是在Build Parse中的 Copy Bundle Resources选项下设置。如下图所示,把要copy的子目录添加进去即可。

不同颜色的文件夹

在XCode中,有两种颜色的文件夹,一种是黄色,一种是蓝色,只有蓝色得文件夹才会被copy到app目录中,黄色的文件夹只是用来组织文件的,并不代表应用的最终结构!

Happy Coding!!!

获取IOS应用的子目录的更多相关文章

  1. 怎么获取iOS的私有API

    前言 作为iOS开发人员,相信大多数伙伴都对怎么获取iOS的私有API很有兴趣,最近通过查找资料,总结了以下三种方法,希望对你有用. 第一种(class-dump) 不得不说这是一个很棒的工具,安装和 ...

  2. Unity3D开发之“获取IOS设备所在的国家代码"

    原地址:http://dong2008hong.blog.163.com/blog/static/469688272014021025578/ 在前一段时间游戏开发中需要实现获取IOS设备所在的国家代 ...

  3. 获取iOS设备型号的方法总结

    三种常用的办法获取iOS设备的型号: 1. [UIDevice currentDevice].model (推荐): 2. uname(struct utsname *name) ,使用此函数需要#i ...

  4. iOS学习——获取iOS设备的各种信息

    不管是在Android开发还是iOS开发过程中,有时候我们需要经常根据设备的一些状态或信息进行不同的设置和性能配置,例如横竖屏切换时,电池电量低时,内存不够时,网络切换时等等,我们在这时候需要进行一些 ...

  5. 2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到F盘下任意目录

    package cn.it.text; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...

  6. 获取ios设备的udid

    今天get的第二个技能~~~ UDID指的是设备的唯一设备识别符,ipa包未上架之前如果不添加udid是无法安装成功的.那么如何快速获取ios设备的udid呢? 今天get的方法是用蒲公英,网址:ht ...

  7. 获取iOS设备唯一标识

    [获取iOS设备唯一标识] 1.已禁用-[UIDevice uniqueIdentifier] 苹果总是把用户的隐私看的很重要.-[UIDevice uniqueIdentifier]在iOS5实际在 ...

  8. 获取 iOS APP 内存占用的大小

    当我们想去获取 iOS 应用的占用内存时,通常我们能找到的方法是这样的,用 resident_size:   #import <mach/mach.h> - (int64_t)memory ...

  9. 获取IOS应用安装列表

    原文转载至 http://blog.csdn.net/justinjing0612/article/details/8887747 转自鸟哥博客:http://blog.cnrainbird.com/ ...

随机推荐

  1. oracle 存储过程 包 【转】

    一.为什么要用存储过程? 如果在应用程序中经常需要执行特定的操作,可以基于这些操作简历一个特定的过程.通过使用过程可以简化客户端程序的开发和维护,而且还能提高客户端程序的运行性能. 二.过程的优点? ...

  2. k-sum问题

    给定一个数组,里面的是任意整数,可能有重复,再给定一个目标T,从数组中找出所有和为T的K个数,要求结果中没有重复. Note: Elements in a quadruplet (a,b,c,d) m ...

  3. windows下nginx的启动关闭

    Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍. .启 ...

  4. Linux系统布置java项目

    一.远程服务器 Linux系统是没有Windows那样可视化的界面的,所以首先我们需要一个远程Linux服务器的软件,有好多种,比较好用的XShell,下载地址:http://rj.baidu.com ...

  5. CodeForces 743C Vladik and fractions (数论)

    题意:给定n,求三个不同的数满足,2/n = 1/x + 1/y + 1/z. 析:首先1是没有解的,然后其他解都可以这样来表示 1/n, 1/(n+1), 1/(n*(n+1)),这三个解. 代码如 ...

  6. JavaScript的Ajax请求示例

    //创建XMLHttpRequest对象              var request = false;            try {                request = new ...

  7. HibernateUtil

    package com.ssh.util; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.Standa ...

  8. Android数据存储之SharedPreferences存储

    安卓系统为应用提供了系统级的配置存储方案,它就是靠SharedPreferences接口来实现的,该接口存储的所有信息都是以名值对的形式保存,但其保存的数据类型也仅限于基本数据类型,如字符串.整形.布 ...

  9. 那年有关 return ; 的一切

    现在只知道在dev C++里面声明了函数的返回类型不为void就不能写return; ,但是如果返回值为void就可以写return; ,而且如你所愿.

  10. CSS3多列

    CSS3多列,通过创建列对页面内容进行布局,轻松实现类似Pinterest.花瓣的瀑布流式布局. 主要包含: column-count  列数 column-gap     列间宽度 column-r ...