gpt4 book ai didi

ios - 如何最好地构建代码以在 iOS 中使用 AFNetworking 和 CoreData 下载资源

转载 作者:可可西里 更新时间:2023-11-01 05:57:42 29 4
gpt4 key购买 nike

我首先使用 AFHTTPClient 下载单个索引文档,然后使用 CoreData 记录每条记录。然后我需要启动一个单独的进程来下载每个单独的记录。执行此操作的最佳方法是什么?

对每一个资源都提出一个请求,就让它们完成,这合理吗?可能有一百个左右。

或者,我可以先加载,提交请求,然后在成功加载并提交后续请求。

我正在使用 CoreData 更新数据库,我认为这意味着我需要为每个请求设置一个单独的 NSManagedObjectContent?

我也很好奇,AFHTTPClient回调是在主线程执行,还是在发起请求的线程执行?我宁愿不让主线程阻塞执行 CoreData I/O。

最佳答案

关于下载资源,您可以使用 AFNetworking 对它们进行排队。

您可以使用 - (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)AFHTTPClient 操作。

首先像这样创建一个单例来保存您自己的 AFHTTPClient:

@interface CustomHTTPClient : NSObject

+ (AFHTTPClient *)sharedHTTPClient;

@end


@implementation CustomHTTPClient

+(AFHTTPClient *)sharedHTTPClient {

static AFHTTPClient *sharedHTTPClient = nil;

if(sharedHTTPClient == nil) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{

// Create the http client
sharedHTTPClient = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://mybaseurl.com"]];

});
}

return sharedHTTPClient;
}

@end

然后像这样排队你的请求:

// Store the operations in case the failure block needs to cancel them
__block NSMutableArray *operations = [NSMutableArray array];

// Add operations for url
for (NSURL *url in urls) {

NSURLRequest *request = [NSURLRequest requestWithURL:url];

__block AFHTTPRequestOperation *operation = [[CustomHTTPClient sharedHTTPClient]
HTTPRequestOperationWithRequest:request
success:^( AFHTTPRequestOperation *operation , id responseObject ){

// Do something

}
failure:^( AFHTTPRequestOperation *operation , NSError *error ){

// Cancel all operations if you need to
for (AFHTTPRequestOperation* operation in operations) {
[operation cancel];
}

}];

[operations addObject:operation];
}

for (AFHTTPRequestOperation* operation in operations) {
[[CustomHTTPClient sharedHTTPClient] enqueueHTTPRequestOperation:operation];
}

还有enqueueBatchOfHTTPRequestOperations:progressBlock:completionBlock:如果你需要监控进度。

AFNetworking 项目: https://github.com/AFNetworking/AFNetworking/

AFNetworking 文档: http://afnetworking.org/Documentation/index.html

关于ios - 如何最好地构建代码以在 iOS 中使用 AFNetworking 和 CoreData 下载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599130/

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