【问题标题】:Searching png files iOS搜索 png 文件 iOS
【发布时间】:2013-11-25 10:09:12
【问题描述】:

我正在我的应用程序的文件夹 Documents 中寻找 png 文件,并将它们的标题添加到数组中。调用函数后数组还是空的。你能帮助我吗?我是 Obj-C 的初学者。谢谢。

我的功能:

-(void)getphotolist{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                   NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSBundle *myBundle = [NSBundle bundleWithPath:documentsDirectory];

    NSArray *mypngs = [myBundle pathsForResourcesOfType:@".png"
                                               inDirectory:documentsDirectory];

    NSMutableArray *photo_array = [[NSMutableArray alloc] init];

    NSLog(documentsDirectory);

    for (NSString *tString in mypngs) {
        [photo_array addObject:tString];

        for (id obj in photo_array)
        {
            NSLog(@"obj: %@", obj);
        }
    }   
}

【问题讨论】:

  • 试试this
  • NSLog(@"%@", filesDirectory); - 应该是这样的
  • @user3030843 试试我更新的答案。它应该在数组中给出所有 png 文件的名称。
  • 应该是:[myBundle pathsForResourcesOfType:@".png" inDirectory:nil];

标签: ios objective-c


【解决方案1】:

试试这个,

NSString * myBundle = [[NSBundle mainBundle] bundlePath];
NSFileManager *manager = [NSFileManager defaultManager];
NSDirectoryEnumerator *dir = [manager enumeratorAtPath: myBundle];

NSString *filename;
NSMutableArray *photo_array = [[NSMutableArray alloc] init];
while ((filename = [dir nextObject] )) {


    if ([filename hasSuffix:@".png"]) {   


        [photo_array addObject:[filename stringByDeletingPathExtension]];


    }

}

【讨论】:

    【解决方案2】:

    问题来了:

    NSArray *mypngs = [myBundle pathsForResourcesOfType:@".png"
                                            inDirectory:nil];
    

    你应该在这里有“nil”。如果您有任何自定义目录,则表示捆绑目录下的目录。

    【讨论】:

      【解决方案3】:

      参考此代码。

      NSString *extension = @"JPEG";
      NSFileManager *fileManager = [NSFileManager defaultManager];
      NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
      
      NSString *documentsDirectory = [paths objectAtIndex:0];
      
      NSArray *contents = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:nil];
      
      NSMutableArray *jpegFiles = [NSMutableArray alloc]init];
      NSMutableArray *jpegFilesPath=[NSMutableArray alloc]init];
      NSString *filename;
      for (filename in contents)
      {
          if ([[filename pathExtension] isEqualToString:extension])
          {
              [jpegFilesPath addObject:[NSString stringWithFormat:@"%@",[documentsDirectory stringByAppendingPathComponent:filename]]];
              NSLog(@"%@",jpegFilesPath);
              [jpegFiles addObject:[UIImage imageWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:filename]]];
      
          }
      }
      

      希望这对你有帮助..!!

      【讨论】:

      • 当您准备好使用文件系统函数时,为什么要遍历所有文件并为此分配所有数组以及所有字符串比较?!
      • 您提到您正在搜索文件夹中的多个 png 文件。所以显然需要迭代来获取所有 png 文件的路径。
      • 顺便说一句。我不是问这个问题的人 - 无论如何为什么不使用有问题的 pathsForResourcesOfType ?
      • 哦!对不起@GrzegorzKrukowski 你还没有问过这个问题。无论如何,我还没有使用 NSBundle 从文档目录访问文件,我发现 NSFilemanager 合适,所以我使用了它。但如果它有效,我肯定会尝试你提供的解决方案。
      • 如果任何一个解决方案都能完美运行,方式并不重要。 :)
      猜你喜欢
      • 2018-11-27
      • 1970-01-01
      • 2012-07-24
      • 2016-02-18
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      相关资源
      最近更新 更多