情况: 我有一个处理文件并允许用户保存、编辑、打开这些文件并执行各种操作的 iOS 应用程序。我希望能够有一些预制文档供用户在打开应用程序(例如模板)时与他们自己的自定义文档一起查看。
问题: 如何创建文档(或模板文件)并在用户安装我的应用程序并启动它(以及之前的所有时间)后将其显示在 Documents 文件夹中?
背景: 此文档(将安装到应用程序的文档目录中的文档)是由我创建的,而不是用户创建的。
我知道要做到这一点,您需要将其保存在您的包中,然后当您的应用程序首次运行时,将其静默复制到文档目录中。我应该将它复制到 appDidFinishLaunchingWithOptions 方法还是我的 viewDidLoad 方法中并编写逻辑来检测它是否是应用程序第一次运行?
我的代码: 在这个网页上:http://textsnip.com/d35fbc 但是当它运行时,它总是说:“文件不存在 [在文档文件夹中]”,然后它告诉我它正在被复制。问题是,当我检查应用程序的文档文件夹时,它根本不存在,它仍然在包中。
为什么它不能用这段代码复制 这是如何工作的?
最佳答案
这些文件实际上必须添加到应用程序包中,然后在应用程序启动时静默复制。
以下代码将一个文本文件从我的包的顶层复制到文档目录(如果它尚不存在)。
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *txtPath = [documentsDirectory stringByAppendingPathComponent:@"txtFile.txt"];
if ([fileManager fileExistsAtPath:txtPath] == NO) {
NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"txtFile" ofType:@"txt"];
[fileManager copyItemAtPath:resourcePath toPath:txtPath error:&error];
}
此代码中唯一的缺陷是,如果用户删除该文件,当他们再次打开该应用程序时,它会立即重新出现。
关于objective-c - 将文档预加载到 iOS 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10745768/