我需要在安装过程中添加一些“默认”文件,或者在“文档”目录中首次启动我的应用程序,以便用户访问“演示”文件或预设。有没有办法正确地做到这一点? 它主要用于iOS应用程序。
答案 0 :(得分:3)
进入应用程序的Documents目录非常简单:
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}
使用上述功能,您可以轻松地引用Documents文件夹将文件(或包含演示文件的文件夹)安装到Documents目录中,然后从中读取它们。
要从iOS应用程序包中复制默认文件,您可以执行以下操作:
let sourceURL = Bundle.main.url(forResource: "defaultfile", withExtension: ".png") // whatever kind of file it is
let destinationFolderURL = self.getDocumentsDirectory()
let fullDestURL = destinationFolderURL.appendingPathComponent("defaultfile.png")
let fileManager = FileManager.default
do{
try fileManager.copyItem(at: sourceURL, to: destURL)
} catch {
print(error)
}
希望我在上面的例子中没有做任何拼写错误。 : - )
答案 1 :(得分:2)
感兴趣的任何人的Obj-C解决方案
如果您希望用户只是阅读/查看这些文件,您只需将它们拖放到Xcode中的项目文件中,然后就可以这样以编程方式访问它们:
[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"relative/path/to/your/files"]
或者,如果您希望用户修改/重新保存这些文件,您需要在第一次启动时将它们从NSBundle
复制粘贴到Documents目录。
- (void)copyDemoFilesToDocumentsFolder {
NSError *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *demoFilesPath = [DOCUMENTS_DIR stringByAppendingPathComponent:@"path/to/your/demo/files"];
if (![fileManager fileExistsAtPath:demoFilesPath]) {
NSString *sourceFolderPath = [[[NSBundle mainBundle] bundlePath]
stringByAppendingPathComponent:@"path/to/your/demo/files"];
[fileManager copyItemAtPath:sourceFolderPath
toPath:demoFilesPath
error:&error];
}
}