【问题标题】:Get List of Content inside BundlePath Of Directory获取目录的BundlePath中的内容列表
【发布时间】:2014-03-29 03:31:29
【问题描述】:
  • 我正在处理需要自定义图像库的项目,其中 图片仅来自特定目录。
  • 所以,我正在文档目录中创建一个目录并复制列表 来自名为“ImageFolder”的捆绑路径目录中的文件,如图所示 截图。

  • 我尝试了不同的代码,但总是得到 Array nil。我知道我得到的路径中没有文件夹,但请告诉我该怎么做。

-我想要什么>

  1. 在文档目录中创建目录“xyz”。

  2. 将所有文件从“ImageFolder”复制到“xyz”。

//=============================================== ====================

//=============================================== ====================

【问题讨论】:

标签: ios iphone objective-c ios7 nsbundle


【解决方案1】:

您显示的ImageFolder 的屏幕截图是Xcode 项目中的一个组,这并不意味着与该组相关的任何内容都会被复制到应用程序中。如果该应用程序中的图像处于您的复制包资源构建阶段,那么它们将被直接复制到应用程序包(而不是子文件夹)中。

您需要添加一个新的副本文件构建阶段,设置文件夹名称,并将图像移动到该文件夹​​中。

完成此操作后,请考虑为什么要复制图像。用户可以进行一些编辑吗?如果没有,那么复制图像就是浪费空间。如果用户可以“删除”某些图像,则考虑存储“已删除项目”列表或用户默认仅隐藏/过滤图像列表。

【讨论】:

  • 是的,谢谢,我的想法与制作所需图像的 plist 相同。使用该 plist 将图像添加到自定义库。
【解决方案2】:

此代码有效

-(void) copyDirectory:(NSString *)directory {

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *documentDBFolderPath = [documentsDirectory stringByAppendingPathComponent:directory];
    NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:directory];

    if (![fileManager fileExistsAtPath:documentDBFolderPath]) {

        //Create Directory!
        [fileManager createDirectoryAtPath:documentDBFolderPath withIntermediateDirectories:NO attributes:nil error:&error];

        NSArray *fileList = [fileManager contentsOfDirectoryAtPath:resourceDBFolderPath error:&error];
        for (NSString *s in fileList) {
            NSString *newFilePath = [documentDBFolderPath stringByAppendingPathComponent:s];
            NSString *oldFilePath = [resourceDBFolderPath stringByAppendingPathComponent:s];
            if (![fileManager fileExistsAtPath:newFilePath]) {
                //File does not exist, copy it
                [fileManager copyItemAtPath:oldFilePath toPath:newFilePath error:&error];
            } else {
                [fileManager removeItemAtPath:newFilePath error:&error];
                [fileManager copyItemAtPath:oldFilePath toPath:newFilePath error:&error];
            }
        }

        [self info:@"Copy finish!"];
    }
}

在目录中添加要复制的文件夹的名称

编辑:

您的文件夹必须通过引用添加。将文件夹拖到 xCode 中的项目中,然后选择“为任何添加的文件夹创建文件夹引用”

【讨论】:

  • 您需要通过引用添加您的文件夹,我更新了我的答案。您的文件夹必须是蓝色而不是黄色
  • 如果有任何答案解决了您的问题,请将其作为正确答案,否则请分享您的解决方法
【解决方案3】:

您当前拥有的是一个组(黄色文件夹图标)(实际上它们不在子文件夹中)-您需要做的是在 Xcode 之外创建一个文件夹,放入您需要的图像,然后将其拖到您的项目 - 你应该有一个蓝色的文件夹图标,你的命令应该可以工作。

另一件事,只需引用它,这样您就不必每次将图像引入 Xcode 时,它​​只会拾取它,然后编译并将其放入包中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    相关资源
    最近更新 更多