objective-c - NSFileManager 仅当在调试器下运行时才查找文件夹内的文件

标签 objective-c macos cocoa filesystems nsfilemanager

当我在 Xcode 调试器下运行以下代码时,它成功找到带有 .app 扩展名的包,但是当我运行它时,独立的"file"对象为零。事实上,当我执行 NSLogs 时,folderEnum 也为零。请注意,folderPath 指向与程序可执行文件位于同一目录中的文件夹。

NSFileManager *localFileManager = [[NSFileManager alloc] init];
NSDirectoryEnumerator *folderEnum = [localFileManager enumeratorAtPath:folderPath];
NSString *file;
while (file = [folderEnum nextObject]) {
  if ([[file pathExtension] isEqualToString: @"app"]) {
     break;
  }
}

有什么想法吗?与 Mac 系统文件权限有关吗?

编辑

我可能应该提到,folderPath 实际上是一个相对路径,而不是绝对路径。所以我将folderPath更改为相对于[[NSBundle mainBundle] bundlePath]路径,现在它可以工作了。但如果有人能解释为什么相对路径不起作用那就太好了。

最佳答案

是否将第一行更改为:

NSFileManager *localFileManager = [NSFileManager defaultManager];

有什么区别吗?您只是想获取应用程序的路径吗? (还有更简单的方法)

关于objective-c - NSFileManager 仅当在调试器下运行时才查找文件夹内的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8118222/

相关文章:

objective-c - 单元测试以验证对象是否被释放

ios - 如何在搜索栏文本中显示?

iphone 导航 Controller : wait for uialertview response before to quit the current view

windows - Windows 版 Safari 和 Mac 版 Safari 之间的区别

objective-c - 如何在 cocoa / quartz 中保存和恢复多个上下文?

cocoa - 基于 Cocoa 文档的应用程序中文档的默认保存位置

objective-c - 在 Objective-C 中,如何完全替换父类的方法,同时保留父类方法的继承功能?

swift - 如何基于 ObjC 代码创建 SPM 包?

macos - 在 Mac 上通过终端连接到 EC2 实例

objective-c - NSApp beginSheet 非常短暂地创建一个工作表然后消失