检查捆绑包中是否存在文件

Abh*_*nav 2 iphone cocoa-touch nsbundle ios

在获取应用程序之前,我们如何检查应用程序中加载的外部包中是否存在文件?

mem*_*ons 13

要检查包中是否存在文件,请使用NSBundle该类.

NSString *path = [[NSBundle mainBundle] 
                            pathForResource:@"somefileinbundle" 
                            ofType:@"png"];
if (!path)
   NSLog(@"Unable to find file in bundle");
Run Code Online (Sandbox Code Playgroud)

尽管如此,在尝试加载文件之前先检查文件是否存在通常是个坏主意.根据Apple的文档NSFileManager fileExistsAtPath:

建议不要尝试基于文件系统的当前状态或文件系统上的特定文件来预测行为.在文件系统竞争条件下,这样做会导致奇怪的行为.尝试操作(例如加载文件或创建目录),检查错误以及优雅地处理任何错误要比尝试提前判断操作是否成功要好得多.有关文件系统竞争条件的详细信息,请参阅"安全编码指南"中的"避免竞争条件和不安全的文件操作"