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

时间:2011-04-04 23:31:45

标签: iphone cocoa-touch ios nsbundle

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

2 个答案:

答案 0 :(得分:13)

要检查捆绑包中是否存在文件,请使用NSBundle类。

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

尽管如此,在尝试加载文件之前先检查文件是否存在通常是个坏主意。根据{{​​1}}

上的Apple文档
  

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

答案 1 :(得分:4)

如果您只想知道它是否存在,那么您可以决定是否加载它,我只是尝试加载它并检查返回的对象是否为零。如果是,你知道它不存在。