【问题标题】:check if file exists in project folder检查项目文件夹中是否存在文件
【发布时间】:2016-05-20 18:29:55
【问题描述】:

我的项目有这样的结构:

my_project
 my_project
  AppDelegate.m
  AppDelegate.h
  ...
  Audio_folder
   my_audio.mp3

所以我想检查Audio_folder 中是否存在音频文件。 我可以用完整路径做到这一点

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:@"/Users/user/Desktop/my_project/my_project/Audio_folder/my_audio.mp3"];

但是我怎样才能用类似的东西来实现它

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:@"Audio/my_audio.mp3"];

?

【问题讨论】:

  • @"/Audio_folder/my_audio.mp3"
  • 你确定它会保存在那里吗?大多数时候,在项目文件夹(查找器)中,它们都将位于根目录下

标签: objective-c xcode file path nsfilemanager


【解决方案1】:

NSFileManager 绝对不能访问项目文件夹。它与应用所在的文件夹或它访问的文档所在的文件夹完全相关。

应用程序的构建过程和实际运行分为“开发者领域”和“用户领域”..

访问开发者文件夹的唯一方法是使用违背沙盒环境的钝方法。即使苹果确实允许临时例外,它也极不可能继续发挥作用。

我可以建议共享两者的唯一方法是在构建阶段使用脚本在两者之间共享一个公共文件夹...

【讨论】:

  • 那么还有其他方法可以实现吗?
  • 据我所知,唯一的方法是:(i)使用构建复制文件(或使用脚本处理),(ii)输出为您需要的任何格式(iii)完成。除了用于规避这一点的可怕的清晰脚本之外,我还没有看到任何其他方法来做到这一点......
【解决方案2】:

在运行时知道这是否可用的唯一方法是使用NSBundle

NSString *path = [[NSBundle mainBundle] pathForResource:@"my_audio" ofType:@"mp3"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];

fileExists 你知道它是否可用。

如果文件被复制到包中,请务必检查构建阶段。

【讨论】:

  • 上面写着use of undeclared identifier pathAndFileName
猜你喜欢
  • 2012-02-05
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
  • 2011-11-15
  • 2015-11-06
  • 2012-07-18
  • 1970-01-01
相关资源
最近更新 更多