首页 > 代码库 > 解决[[NSFileManager defaultManager] contentsOfDirectoryAtPath 方法获取不到数据的bug

解决[[NSFileManager defaultManager] contentsOfDirectoryAtPath 方法获取不到数据的bug

在说这个问题之前,必须先解释一下,我们在引入工程的时候,xcode会给我们3个选项



1.Copy items if needed

主要是说明,是否要将文件拷贝到工程所在目录。

如果不选中,而且该库文件不在工程目录下,引入文件的时候就仅仅是引入逻辑链接,不拷贝文件。(如果库文件移动,则可能在编译工程的时候出错)

如果选中,则将该文件拷贝到工程目录下(系统推荐的方式),虽然引用的也是逻辑链接,但是不会因为引动库文件而引起错误


2.Create groups

把选择的文件添加到工程的group下,如果你选择的是文件,则把文件夹认为是group。他添加的文件夹对应的工程目录和文件路径不一定是一一对应的。你可以删除文件,可以把这个文件删除在工程外,也可以删除文件对应的本地文件。应该它生成的文件夹是黄色的。

例如:


3.Create folder references

这种方法是建立一个文件夹的索引,同时文件夹中的所有文件也会添加到整个工程。他添加的文件夹对应的工程目录和文件路径是一一对应的。你要删除其中的文件的话可以直接到文件目录下把文件删除,然后再刷新一下目录,文件就会被删除了。这样添加文件夹的方法很方便,你在做cocos2d的工程时应该会经常用到。应该他生成的文件夹是蓝色的。

例如:


通过Show in Finder 打开工程,右键两个文件夹可以看出


我使用 [[NSFileManager defaultManager] contentsOfDirectoryAtPath 本意是获取bundle中的资源,所以用Create folder references,就可以解决获取为nil的bug了

参考文章:http://blog.csdn.net/yu0089/article/details/16984985

http://www.cnblogs.com/taintain1984/p/3423773.html

http://www.cocoachina.com/bbs/simple/?t20533.html

http://www.4byte.cn/question/21930/unable-to-copy-folder-from-application-bundle-to-document-directory.html

解决[[NSFileManager defaultManager] contentsOfDirectoryAtPath 方法获取不到数据的bug