मैंने सोचा कि मैंने यह पता लगाया है लेकिन मैं इसे काम पर नहीं ला सकता हूं। मेरे पास एक विधि है जिसे किसी सरणी में प्रत्येक यूआरएल पर बुलाया जाता है। इस विधि में एक तस्वीर का URL है जिसे ऑफ़लाइन उपयोग के लिए एप्लिकेशन समर्थन फ़ोल्डर में विशिष्ट पथ में डाउनलोड किया जाना चाहिए। लेकिन शायद मैं AFNetwork लाइब्रेरी में विधियों की गलत व्याख्या कर रहा हूं। मेरे विधि इस प्रकार है:आईओएस में AFNetworking के साथ एक फ़ाइल/छवि डाउनलोड करें?
- (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 छवि है कि मैं डाउनलोड करना चाहते करने के लिए सीधा संबंध है।
चूंकि इस विधि को सभी छवियों के लिए बुलाया जाता है, इसलिए सभी लॉग कई बार बुलाए जाते हैं, और यह सही लगता है।
तुम मुझे सीधे इशारा किया । मैं जो कर रहा था उसके बारे में कुछ संदेह था, बहुत बहुत धन्यवाद। –
अतिरिक्त: यदि आपके पास एक साथ कई अनुरोध हैं, तो 'NSOperationQueue' (सभी AFRequestOperation क्लासेस कोडिंग अनुपालन कर रहे हैं) का उपयोग करने पर विचार करें और कतार संचालन को संभालने दें। यह आसान हो सकता है और एक ही समय में 100 अनुरोधों को आग नहीं लगाएगा। – choise
एनएसओपरेशनक्यूयू को लागू किए बिना आमतौर पर कितने अनुरोध किए जा सकते हैं ?, यह 50 से अधिक अनुरोध कभी नहीं होगा, क्या यह पर्याप्त है कि यह लागू करने योग्य है? –