2

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

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

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

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

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

4

2 回答 2

2

你想看看 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"];
}
于 2010-02-23T17:35:54.173 回答
1

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

这...

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

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

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

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

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

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

编辑01:

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

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

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

于 2010-02-23T18:43:22.300 回答