gpt4 book ai didi

ios - 将图像从应用程序复制到文档目录并在之后重写

转载 作者:行者123 更新时间:2023-11-29 11:02:45 26 4
gpt4 key购买 nike

我有一个应用程序,其中有一定数量的 .jpg 图片(大约 300 张)。它们作为开始的东西,因为它们实际上位于互联网上,但显然用户在第一次启动应用程序时不要下载所有它们更方便,而是将它们预先打包。

每次从服务器获取新信息时,我都需要重写这些图像。显然,我不能触摸应用程序包,所以我看到我的步骤是这样的:

  1. 在应用程序第一次启动时将图像从 bundle 解压缩到 Documents Directory。
  2. 只能从 Documents Directory 访问它们,不能从 bundle 访问它们。
  3. 如果有必要,我应该重写它们。

因此我的代码将是统一的,因为我将始终使用相同的路径来获取图像。

问题是我对 iOS 中的整个文件系统知之甚少,所以我不知道如何将特定的包内容解压到文档目录,也不知道如何写入文档目录.

能否请您帮我编写一些代码,并确认我的解决方案是否正确?

最佳答案

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *destPath = [documentsDirectory stringByAppendingPathComponent:@"images"]; //optionally create a subdirectory

//"source" is a physical folder in your app bundle. Once that has a blue color folder (not the yellow group folder)
// To create a physical folder in your app bundle: drag a folder from Mac's Finder to the Xcode project, when prompts
// for "Choose options for adding these files" make certain that "Create folder references for …" is selected.
// Store all your 300 or so images into this physical folder.

NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"source"];
NSError *error;
[[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:destPath error:&error];
if (error)
NSLog(@"copying error: %@", error);

根据 OP 的其他评论进行编辑:

要用相同的文件名重写到相同的目录,您可以结合使用 fileExistsAtPath 和 removeItemAtPath 在写入之前检测并删除现有文件。

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
[[NSFileManager defaultManager] removeItemAtPath:filePath error:&error];
}
// now proceed to write-rewrite

关于ios - 将图像从应用程序复制到文档目录并在之后重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15119564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com