objective-c - 使用 NSOpenpanel 和 NSfilemanager 查找目录内容

标签 objective-c

我是 Objective-C 的新手,所以请原谅我缺乏知识。我这里有一段代码,我似乎无法正常工作。我想做的是在单击按钮时显示一个目录选择面板。一旦用户选择一个目录,我想创建一个包含该目录中所有内容的数组。最终我想使用这个数组来将子目录和文件(用户选择的目录中的所有内容)列表复制到另一个位置。

我收到一条警告,提示找不到实例方法“-contentsofdirectoryaturl:options:error”(返回类型默认为 id)。我不太确定这意味着什么或如何解决它,我怀疑这是我的问题。提供的任何建议都会很棒。谢谢!

- (IBAction)selectfiles:(id)sender {

NSOpenPanel *openPanel = [NSOpenPanel openPanel];

[openPanel setCanChooseDirectories:YES];
[openPanel setCanChooseFiles:NO];
[openPanel setAllowsMultipleSelection:NO];

if ( [openPanel runModal] == NSOKButton ) {

    NSArray *accountPath = [openPanel URLs];
    NSLog (@"%@", accountPath);

    NSFileManager *filemgr;
    filemgr = [NSFileManager defaultManager];

    NSArray *contents;
    contents = [filemgr contentsOfDirectoryAtURL:accountPath options:(NSDirectoryEnumerationSkipsHiddenFiles) error:nil];

    }

}

最佳答案

contentsOfDirectoryAtURL: 有一个附加参数 includePropertiesForKeys:,您已省略该参数。这就是编译器警告您的原因。该参数是您想要预取的属性列表。在最简单的情况下,您可以指定一个空数组。

另一个错误是,[openPanel URLs] 返回一个 URL数组,即使只选择了一项。

所以你的代码应该是这样的:

NSURL *accountPath = [[openPanel URLs] objectAtIndex:0];
NSLog (@"%@", accountPath);

NSFileManager *filemgr;
filemgr = [NSFileManager defaultManager];

NSArray *contents;
contents = [filemgr contentsOfDirectoryAtURL:accountPath
    includingPropertiesForKeys:[NSArray array]
    options:(NSDirectoryEnumerationSkipsHiddenFiles)
    error:nil];

关于objective-c - 使用 NSOpenpanel 和 NSfilemanager 查找目录内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12166788/

相关文章:

objective-c - 在资源中保存 URL

iphone - 如何检查 NSString 中的十六进制颜色在 Objective C 中是浅色还是深色?

objective-c - 如何在运行时确定 NSManagedObject 的子类是否具有特定属性

ios - Objective C >> 有没有办法检查 Selector 的返回值?

ios - 覆盖 loadView 会导致 viewDidLoad 和 loadView 在每次出现 VC 时触发

iPhone - 如何在进入前景后恢复帧大小?

ios - 从 NSNumber 获取 CGFloat 的最常见和正确的做法是什么?

objective-c - libz.dylib libsqlite3.dylib 不在 Xcode 7 中,解析不保存数据

objective-c - iOS/Objective-C : Adding NSString object to NSMutableArray, NSMutableArray 是(空)

php - 上传到mysql服务器不工作