Objective c NSFileManager仅在文件夹';它在调试器下运行
当我在Xcode调试器下运行以下代码时,它成功地找到扩展名为.app的包,但当我运行它时,独立的“file”对象为nil。事实上,当我做NSLogs时,folderEnum也是零。请注意,folderPath指向与程序可执行文件位于同一目录中的文件夹Objective c NSFileManager仅在文件夹';它在调试器下运行,objective-c,macos,cocoa,filesystems,nsfilemanager,Objective C,Macos,Cocoa,Filesystems,Nsfilemanager,当我在Xcode调试器下运行以下代码时,它成功地找到扩展名为.app的包,但当我运行它时,独立的“file”对象为nil。事实上,当我做NSLogs时,folderEnum也是零。请注意,folderPath指向与程序可执行文件位于同一目录中的文件夹 NSFileManager *localFileManager = [[NSFileManager alloc] init]; NSDirectoryEnumerator *folderEnum = [localFileManager enumer
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]代码>
有什么不同吗?您只是想获取应用程序的路径吗?(有更简单的方法)那没用。在我看来,所有的文件系统操作都失败了。事实上,NSTask启动也在下降,即使我硬编码启动路径,它也会返回“启动路径不可访问”。当然,所有这些都可以在调试器下正常工作。为了让您了解我在做什么,我正在创建一个自定义安装程序,它执行各种安装程序并执行文件系统操作。您没有意外地启用权限(即沙箱),是吗?我之前检查过,权限肯定已禁用。不过,这看起来确实像是沙箱类型的问题。我在Xcode 4.2中创建了一个新的空项目,并在ApplicationIDFinishLaunching选择器中粘贴了上面的代码(带有NSLogs)。相同的处理,仅在调试器下工作。