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

Posted jzssuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决[[NSFileManager defaultManager] contentsOfDirectoryAtPath 方法获取不到数据的bug相关的知识,希望对你有一定的参考价值。

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



1.Copy items if needed

主要是说明,是否要将文件复制到project所在文件夹。

假设不选中。并且该库文件不在project文件夹下。引入文件的时候就不过引入逻辑链接,不复制文件。(假设库文件移动,则可能在编译project的时候出错)

假设选中,则将该文件复制到project文件夹下(系统推荐的方式)。尽管引用的也是逻辑链接,可是不会由于引动库文件而引起错误


2.Create groups

把选择的文件加入到project的group下,假设你选择的是文件。则把目录觉得是group。他加入的目录相应的project目录和文件路径不一定是一一相应的。你能够删除文件,能够把这个文件删除在project外,也能够删除文件相应的本地文件。

应该它生成的目录是黄色的。


比如:


3.Create folder references

这样的方法是建立一个目录的索引。同一时候目录中的全部文件也会加入到整个project。

他加入的目录相应的project目录和文件路径是一一相应的。你要删除当中的文件的话能够直接到文件目录下把文件删除,然后再刷新一下目录。文件就会被删除了。这样加入目录的方法非常方便。你在做cocos2d的project时应该会经经常使用到。应该他生成的目录是蓝色的。


比如:


通过Show in Finder 打开project,右键两个目录能够看出


我使用 [[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的主要内容,如果未能解决你的问题,请参考以下文章

视频并不总是导出到相机胶卷:NSFileManager 的 removeItemAtPath 非阻塞?

包和 NSFileManager enumeratorAtURL:包括PropertiesForKeys:options:errorHandler:

NSFileManager.contentsOfDirectoryAtURL 返回的文件根据 NSFileManager.fileExistsAtPath 不存在?

NSFileManager 多实例写入原子性

NSFilemanager 的使用

NSFileManager的应用