gpt4 book ai didi

objective-c - 在 Objective C 中从 NSBundle 获取图像路径?

转载 作者:太空狗 更新时间:2023-10-30 03:34:24 34 4
gpt4 key购买 nike

我有大约 60 张图像要存储在 Core Data 中,其中 30 张是头像,前缀为 avt_filename_00X.png,另外 30 张较小,前缀不同。

我不想将所有图像作为 BLOB 存储在 Core Data/SQLite 中,而是希望存储找到的每个图像的路径(与存储 MySQL 数据库图像路径的方式相同)。

但是我不确定如何获取在 NSBundle 中找到的图像路径。

我可以通过以下方式获得 NSDocumentDirectory 的路径:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager fileExistsAtPath:documentsDirectory];

NSLog(@"documentsDirectory = %@", documentsDirectory);

我可以加载图像并将其添加到数组中。

if (qty == 0)
{
//NSLog(@"fileToLoad = %@", fileToLoad);

UIImage *img = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fileToLoad ofType:fileExt]];

[self.avtList addObject:img];

[img release];

} else {

// load multiple image into an array
// not coded yet
}

但是,我不确定的是:

  1. 一旦图像进入 NSBundle,我如何获取计算机找到图像的路径?

  2. 当应用在设备上时,我如何确定该路径有效?

我们的想法是将所有图像存储在一个数组中,然后稍后将它们推送到 Core Data/SQLite。

最佳答案

在主包中获取资源完整路径的正确方法是:

[[NSBundle mainBundle] pathForResource:@"avt_filename_00X" ofType:@"png"]

(如果您希望在资源名称中包含扩展名,则可以为“ofType”提供空字符串)

但文档中没有任何地方保证路径在设备、操作系统迭代等方面保持不变。它是当前环境中应用程序包到该文件的路径,保证在此运行期间保持有效仅限应用程序。

因为不能保证应用程序及其资源的路径保持不变,所以我认为以任何方式将其放入 SQL 数据库中显然都是不安全的。

您是否可以采用一种方案,以/开头的文件名是一个完整的路径,开头没有/的文件被假定在包中,这意味着您可以在数据库外部应用逻辑?

关于objective-c - 在 Objective C 中从 NSBundle 获取图像路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4044376/

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