gpt4 book ai didi

iOS 可以从磁盘写入或读取图像数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:10:08 25 4
gpt4 key购买 nike

我正在尝试使用以下方法加载图像。

我首先检查磁盘上是否已经有图像,如果有,那么我将从磁盘获取图像数据并加载它,否则我将从服务器获取图像并写入磁盘,以便第二个当我需要图像时,我将不必访问服务器。

问题是它似乎无法写入或读取磁盘。每次我想第二次加载图像时,它仍然从服务器读取它们,并且 NSLog(@"disk"); 永远不会被调用。

如果有人有任何想法,我不知道我做错了什么?

-(UIImage *)imageWith:(NSString *)imageName isPreview:(BOOL)preview
{
//imageName is something like "56.jpg"

NSString *mainOrPreview = @"Preview";
if (!preview) {
mainOrPreview = @"Main";
}

NSString *pathSuffix = [[@"Images" stringByAppendingPathComponent:mainOrPreview] stringByAppendingPathComponent:imageName];
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:pathSuffix];
NSData *imageData = [NSData dataWithContentsOfFile:path];

if (imageData) {
NSLog(@"disk");
}

if (!imageData && [self connected]) {

imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[serverURL stringByAppendingPathComponent: pathSuffix]]];

if (imageData) {

[imageData writeToFile:path atomically:YES];
}

NSLog(@"server");
}

return [UIImage imageWithData:imageData];
}

最佳答案

问题是目录不存在于 Documents 之外。因此,写入文件的尝试失败了。使用具有 NSError 参数的文件方法总是一个好主意,这样您就可以检查结果。

您只需更新实际从服务器写入图像的代码。

if (!imageData && [self connected]) {
// This needs to be done in on a background thread!
imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[serverURL stringByAppendingPathComponent: pathSuffix]]];

if (imageData) {
[[NSFileManager defaultManager] createDirectoryAtPath:[path stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];
[imageData writeToFile:path atomically:YES];
}

NSLog(@"server");
}

关于iOS 可以从磁盘写入或读取图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16630364/

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