创建文档文件夹 iPhone SDK

Posted

技术标签:

【中文标题】创建文档文件夹 iPhone SDK【英文标题】:Create documents folder iPhone SDK 【发布时间】:2011-09-14 04:19:24 【问题描述】:

我正在开发一个应用程序,当按下正确的按钮时,它会显示几页文本。它是静态专有信息。六个按钮中的每一个都有一个不同的文本文件。

我是 ios SDK 的新手。在 XCODE 中创建项目会自动创建 Documents 文件夹吗? “文档文件夹”是苹果所谓的“沙盒”吗?

我可以简单地编写我的文本(将在屏幕上显示的部分,大量文本),将其放入“文档文件夹”,然后当某个按钮按下时在 iPhone 上以“滚动模式”显示它按下了吗?

如果有办法有效地存储和显示大型文本文件,我希望文本成为编译的一部分,因为信息是专有的,而不仅仅是文本文件。

【问题讨论】:

【参考方案1】:

是的,Ken,当您创建应用程序时,默认情况下文档目录就在那里,是的,如果您愿意,您当然可以从中写入和读取文本数据。

您不能直接将数据放入 Documents 文件夹,但是您需要以编程方式进行。

假设您的文件之一是“TextFile1.txt”。您应该先将此文件添加到您的项目中,然后在 appDelegate 中的某处,编写以下代码;

NSString *fileBundlePath = [[NSBundle mainBundle] pathForResource:@"TextFile1" ofType:@"txt"];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileDocumentDirectorySavePath = [documentsDirectory stringByAppendingPathComponent:@"TextFile1.txt"];

NSFileManager *fm = [NSFileManager defaultManager];
if (![fm fileExistsAtPath:fileDocumentDirectorySavePath])
    [fm copyItemAtPath:fileBundlePath toPath:fileDocumentDirectorySavePath error:nil];

这会将 TextFile1.txt 复制到您的应用程序文档文件夹中,您可以随时使用以下代码从中读取它;

// You can get the fileDocumentDirectorySavePath same way as in the above code
NSString *stringToDisplay = [[NSString alloc] initWithData:[NSData dataWithContentsOfFile:fileDocumentDirectorySavePath] encoding:NSUTF8StringEncoding];
NSLog(@"String : %@", stringToDisplay);

您可以对需要处理的任意数量的文本文件执行此操作。

【讨论】:

【参考方案2】:

如果您不想动态更改文本(即仅在您提交更新时),只需将文件直接添加到您的 Xcode 项目中,甚至不必担心沙盒/文档文件夹。您可以将文件拖到 Xcode 的侧边栏中(为它创建一个自定义文件夹会非常有条理)并选中“将文件复制到项目文件夹?”当被问到时。如前所述,它们现在被复制并成为已编译应用程序的一部分。然后可以查询文件并显示在UITextView中,自动支持文本滚动。

或者,您可以采用我认为更简单的方法,将文件直接包含在您的代码中。在加载文本的类文件中,在 .h 文件(标题)中,添加 UITextView 作为属性和变量。在 .m 文件(实现)中,执行 yourTextView = [[UITextView alloc] init];,然后将 yourTextView.text 设置为包含您的文本的 NSString。听起来令人困惑,但最终更新会更快更容易。也就是说,除非您的文本已格式化...无论如何,您也可以在您的 XIB/NIB 文件中创建一个 UITextView 并直接添加您的文本。

我建议您在代码中执行此操作。这将是最容易改变的。

【讨论】:

【参考方案3】:

向您的应用添加文本是一回事 - 使其安全更加困难。我不得不处理类似的问题,并决定使用我在我的应用程序中加密的未格式化文本,并且只解密正在显示的部分。真的取决于你想保留文本的“秘密”程度。请记住,无论如何,任何人都可以阅读它并直接从屏幕上复制它并使用屏幕截图。使用 HexEditor 也可以很容易地读取和提取应用程序中的未加密文本!

或者,您可以准备 *.txt(未格式化)或 html(根据需要格式化)文件格式的文本,然后将其包含在您的应用程序中。但是,这是其他人复制文件的简便方法。

【讨论】:

为什么要使用十六进制编辑器?字符串实用程序要容易得多。 :) $ strings myappbinary 刚刚在我的应用程序上尝试过。结果是:字符串:对于架构 armv7 对象:myappbinary 格式错误的对象(未知的加载命令 9),其中 myappbinary 是我的二进制应用程序文件,由 xcode 创建

以上是关于创建文档文件夹 iPhone SDK的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 iPhone SDK 创建 PDF 文档? [复制]

如何在 iPhone SDK 中检测 PDF 文档的方向

iOS 8.1 SDK 的文档文件夹

在 iPhone SDK 中查看大 PDF 文件

可以在 iphone sdk 中录制 mp3 吗?

将 NSMutableArray 保存到 iPhone 文档目录