创建文档文件夹 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的主要内容,如果未能解决你的问题,请参考以下文章