【问题标题】:Location of my own directories我自己的目录的位置
【发布时间】:2010-02-23 17:00:47
【问题描述】:

我正在尝试了解如何创建自己的目录树并从我的应用程序中访问它。

我正在做某种学习计划,想创建一个这样的目录结构:

-MyLessonsDirectory
--LessonDirectory_1
---Step_1
---Step_2
---Step_3
--LessonDirectory_2
---Step_1
---Step_2
---Step_3
.
.
and so on

在每个“步骤”目录中,我都会有本课该步骤的具体内容。内容是我在开发时添加的。因此,我不想从应用程序中创建结构和内容,只需访问它并读取目录的内容。如果我可以创建并使用这种结构,那么创建一个漂亮的设计将非常容易,从而可以轻松地在我的应用程序中创建新课程。

我无法弄清楚我应该在 xCode 的文件结构中在哪里创建这些目录,以及从我的应用程序到这些目录的路径是什么。

【问题讨论】:

    标签: iphone objective-c xcode file-management


    【解决方案1】:

    你想看看 NSFileManager 创建目录:

    NSFileManager *fm = [NSFileManager defaultManager];
    NSError *error;
    BOOL result = [fm createDirectoryAtPath:@"path....." withIntermediateDirectories:YES attributes:nil error:&error];
    if(result){
       NSLog(@"success!");
    } else {
       NSLog(@"error: %@",error);
    }
    

    至于创建目录的位置,您可以将其放在 ~/Application Support/--Your App's Name-- 如果用户不需要访问它,您应该在此处存储应用程序的数据。否则,您应该让用户决定将其保存在哪里。

    - (NSString *)applicationSupportDirectory {
    
           NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
           NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : NSTemporaryDirectory();
           return [basePath stringByAppendingPathComponent:@"MyApplication"];
    }
    

    【讨论】:

    • 感谢您的回答。我想我的问题并不清楚。我想做的是在启动应用程序之前手动添加内容。然后,在应用程序中,我将阅读我在启动应用程序之前添加的内容。我已经编辑了我的问题以反映这一点。
    • 我确实在 xCode 中的项目下直接创建了一个目录,运行了应用程序,然后在 /Users/Niklas/Library/Application Support/iPhone Simulator/User/Applications 和我的应用程序中进行了检查。该目录没有出现,所以我想它不像我想要的那样工作,创建我自己的目录结构......无论如何,谢谢,我想我必须找到一个不同的解决方案,也许文件的命名可以用来模拟一个目录结构……嗯……
    【解决方案2】:

    在 iPhone 上,您只能访问应用程序自己的目录。将练习目录放在 app 目录中的 Documents 文件夹中的最佳位置。

    这...

    NSString *dp=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    

    ... 为您提供目录文件夹的路径,然后您可以将其交给 NSFileManager。

    如果你想直观地查看目录结构,在模拟器上运行应用程序并查看

    ~/Library/Application Support/iPhone Simulator/User/Applications
    

    该应用程序将位于具有乱码 UUID 名称的文件夹之一中。您可以在 Finder 中查看目录和文件。

    我要补充一点,iPhone 已经拥有您可能实际需要的大部分目录。您拥有首选项、缓存、tmp、文档等。

    编辑01:

    我想做的是添加内容 在我开始之前手动 应用。然后,从内部 应用程序我将阅读我的内容 在启动应用程序之前添加。

    您无法更改默认目录结构,并且您完全无法控制应用程序或其目录的安装方式。 iPhone 应用程序没有任何类型的外部支持文件。一切都在应用程序包中。

    但是,应用程序包实际上只是一个目录,因此您可以在其中填充内容并在应用程序第一次运行时将它们复制到默认目录之一。您可以将任何您想要的内容写入文档目录。

    【讨论】:

    • 感谢您的回答。我想我的问题并不清楚。我想做的是在启动应用程序之前手动添加内容。然后,在应用程序中,我将阅读我在启动应用程序之前添加的内容。我已经编辑了我的问题以反映这一点。看了你的第一句话,是不是意味着我不能做我想做的事?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多