Tôi nghĩ tôi đã tìm ra nhưng tôi không thể làm việc đó được. Tôi có một phương thức được gọi trên mọi URL trong một mảng. Phương pháp này có URL của ảnh cần được tải xuống trong đường dẫn cụ thể trong thư mục Hỗ trợ ứng dụng để sử dụng ngoại tuyến. Nhưng có lẽ tôi hiểu sai các phương pháp trong thư viện AFNetwork. Phương pháp của tôi trông giống như sau:Tải xuống tệp/hình ảnh với AFNetworking trong iOS?
- (void) downloadImageInBackground:(NSDictionary *)args{
@autoreleasepool {
NSString *photourl = [args objectForKey:@"photoUrl"];
NSString *articleID = [args objectForKey:@"articleID"];
NSString *guideName = [args objectForKey:@"guideName"];
NSNumber *totalNumberOfImages = [args objectForKey:@"totalNumberOfImages"];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:photourl]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.inputStream = [NSInputStream inputStreamWithURL:[NSURL URLWithString:photourl]];
[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:^{
DLog(@"PROBLEMS_AF");
}];
DLog(@"URL_PHOTOURL: %@", photourl);
DLog(@"indexSet: %@", operation.hasAcceptableStatusCode);
[operation response];
NSData *data = [args objectForKey:@"data"];
NSString *path;
path = [NSMutableString stringWithFormat:@"%@/Library/Application Support/Guides", NSHomeDirectory()];
path = [path stringByAppendingPathComponent:guideName];
NSString *guidePath = path;
path = [path stringByAppendingPathComponent:photourl];
if ([[NSFileManager defaultManager] fileExistsAtPath:guidePath]){
[[NSFileManager defaultManager] createFileAtPath:path
contents:data
attributes:nil];
}
DLog(@"path: %@", path);
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation start];
DLog(@"isExecuting: %d",[operation isExecuting]);
DLog(@"IS_FINISHED: %d",[operation isFinished]);
}
}
PhotoURL là liên kết trực tiếp đến hình ảnh mà tôi muốn tải xuống.
Vì phương pháp này được gọi cho tất cả hình ảnh, tất cả nhật ký được gọi nhiều lần và có vẻ đúng.
Bạn đã chỉ cho tôi thẳng . Đã có một số nghi ngờ về những gì tôi đã làm, cảm ơn bạn rất nhiều. –
bổ sung: nếu bạn có nhiều yêu cầu cùng một lúc, hãy xem xét sử dụng 'NSOperationQueue' (tất cả các Lớp AFRequestOperation đều tuân thủ mã hóa) và để hàng đợi xử lý các hoạt động. điều này có thể có ích và sẽ không kích hoạt 100 yêu cầu cùng một lúc. – choise
Có bao nhiêu yêu cầu mà một ứng dụng thường có thể xử lý mà không cần triển khai NSOperationQueue ?, nó sẽ không bao giờ có nhiều hơn 50 yêu cầu, là đủ để nó thực hiện? –