您能在这行代码中找到错误吗?它返回零! 该应用程序已完全沙箱化,但启用了下载文件夹访问权限。
NSArray*array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"/Downloads/"] error:NULL];
//array==nil: Why?
[编辑]问题:我无法测试它。它发生在审查机器的Guest帐户上。编译后的二进制文件是否有问题,或者您有任何提示如何解决此问题?
答案 0 :(得分:1)
尝试使用错误句柄读取目录以检查发生的情况:
NSError *error = nil;
NSArray*array = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:
[NSHomeDirectory() stringByAppendingPathComponent:@"/Downloads/"]
error:&error];
if ( !array )
NSLog(@"ERROR: %@", [error description]);
这将为您提供更详细的描述错误。
要将此错误记录到文件quick'n'dirty,请使用以下消息:
[[error description] writeToFile:@"strangeerrors.log"
atomically:NO encoding:NSUTF8StringEncoding error:nil];
答案 1 :(得分:1)
您是否尝试过更换
[NSHomeDirectory() stringByAppendingPathComponent:@"/Downloads/"]
与
[@"~/Downloads" stringByExpandingTildeInPath]
答案 2 :(得分:1)
添加路径组件时不需要添加任何斜线。这很简单:
[NSHomeDirectory() stringByAppendingPathComponent:@"Downloads"] ...
对我来说很好!
答案 3 :(得分:0)
这里几乎肯定不是真正的问题,但可以说将@"Downloads/"
作为路径组件而不是使用前导斜杠更有意义。在Cocoa看来,要求@"/Downloads/"
的组件会给你:
@"/"
@"Downloads"
这可能不是你想要的。