gpt4 book ai didi

ios - 带有核心数据的异步图像下载

转载 作者:行者123 更新时间:2023-11-29 03:37:38 25 4
gpt4 key购买 nike

我想知道如何以正确的方式做到这一点。我有 NSManagedObject,它包含属性:name、imageUrl、iconUrl。我正在使用类别来更新此对象:

@implementation MyObject (Create)
+ (instancetype)findOrCreateWithIdentifier:(id)identifier inContext:(NSManagedObjectContext*)context {
NSString* entityName = NSStringFromClass(self);
NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:entityName];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name = %@", identifier];
fetchRequest.fetchLimit = 1;
id object = [[context executeFetchRequest:fetchRequest error:NULL] lastObject];
if(object == nil) {
object = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:context];
}
return object;
}

+ (void)createWithJSONComponents:(NSDictionary*)components intoContext:(NSManagedObjectContext*)context
{
NSString* name = components[@"name"];
NSString* imageUrl = components[@"image"];
NSString* iconUrl = components[@"icon"];

MyObject* myObject = [self findOrCreateWithIdentifier:myObject inContext:context];

if(!myObject.name)
{
myObject.name = name;
}

if(![imageUrl isEqualToString:myObject.imageURL]
|| !myObject.imageURL )
{
myObject.imageURL = imageUrl;
//TODO remove old image and get new one
//TODO2 in block callback after download myImageNameWithMD5 = imageNameWithMD5
}

if(![iconUrl isEqualToString:myObject.iconUrl]
|| !myObject.iconUrl)
{
myObject.iconUrl = imageUrl;
//TODO remove old image and get new one
//TODO2 in block callback after download myImageNameWithMD5 = imageNameWithMD5
}
}

我正在使用 fetchResultDelegate 刷新我的 tableView。

现在我有几个问题。通过异步下载在我的//TODO 部分中获取图像是否是一种正确的方法?如果我执行//TODO2 代码,fetchResultDelegate 会通知我图像已设置吗?或者我应该与添加那些 managedObject 的线程同步吗?最后,如果应用程序被杀死,如何停止 imageDownload?或者我应该在我的模型类中使用 myImageNameWithMD5 setter 方法进行下载吗?

最佳答案

我认为真实图像应该与CoreData数据库分开。因为您可能永远不会真正向用户展示。

我的方法是仅在用户即将看到图像时才下载图像,并且第三个像 SDWebImage 这样的派对框架,再简单不过了。

它自动处理下载、更新、缓存和显示。

关于ios - 带有核心数据的异步图像下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934444/

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