【问题标题】:Cocoa check for multiple file extensions in folderCocoa 检查文件夹中的多个文件扩展名
【发布时间】:2014-02-17 15:41:12
【问题描述】:

如果文件夹包含以下代码中带有扩展名字符串的文件,我需要启动警报面板。 “输入”文本字段包含路径字符串...无法正常工作...感谢您的帮助。

 NSString * filePath = [input stringValue];
 NSURL *fileURL = [NSURL fileURLWithPath:filePath];

 NSString *theFolder= [fileURL path];

 NSFileManager * fileMan = [[NSFileManager alloc] init];
 NSArray * files = [fileMan contentsOfDirectoryAtPath:theFolder error:nil];

 if (files)
 {
   for(int index=0;index<files.count;index++)
   {
       NSString * file = [files objectAtIndex:index];


      if (!([file.pathExtension isEqualToString:@"txt"] || [file.pathExtension isEqualToString:@"rtf"] || [file.pathExtension isEqualToString:@"doc"] || [file.pathExtension isEqualToString:@"rtfd"])) {

///alert code

【问题讨论】:

  • 您不知道如何运行警报面板或确切的问题是什么?
  • @Volker 警报面板没有问题,抱歉 ;)。问题是上面的代码没有正确解析有问题的文件夹。换句话说 - 即使有问题的文件夹确实包含任何指定的扩展名,也会出现警报面板。我是否正确解析了文件夹(显然是路径字符串的 lastPathComponent)??

标签: cocoa nsstring


【解决方案1】:

替换

NSFileManager * fileMan = [[NSFileManager alloc] init];

NSFileManager * fileMan = [[NSFileManager defaultManager];

确保

NSString *theFolder= [fileURL path];

给你一个文件夹而不是一个文件名!

我建议将比较中的所有字符串都小写。

在for循环之外声明一个bool变量

BOOL otherFiles = NO;
if (files) { 
   for(int index=0;index<files.count;index++)
   {
       NSString * file = [files objectAtIndex:index];
       if (!([file.pathExtension.lowercaseString isEqualToString:@"txt"] || 
           [file.pathExtension.lowercaseString isEqualToString:@"rtf"] || 
           [file.pathExtension.lowercaseString isEqualToString:@"doc"] || 
           [file.pathExtension.lowercaseString isEqualToString:@"rtfd"])
       ) otherFiles = YES;
}
if (otherFiles) NSRunAlertPanel.....

确保文件包含您期望的内容!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2018-05-29
    相关资源
    最近更新 更多