मेरे पास मेरे रिमोट सर्वर पर एक फ़ोल्डर है जिसमें इसमें कुछ .png फ़ाइलें हैं। मैं इन्हें अपने ऐप के भीतर से डाउनलोड करना चाहता हूं और उन्हें ऐप्स 'दस्तावेज़' फ़ोल्डर में स्टोर करना चाहता हूं। मैं यह कैसे कर सकता हूँ?इंटरनेट से फ़ाइलों को डाउनलोड करने और आईफोन पर 'दस्तावेज़' में सहेजने के लिए कैसे?
उत्तर
डेटा प्राप्त करने और इसे लिखने के लिए एनएसडीटा की सुविधा विधियों initWithContentOfURL:
और writeToFile:atomically:
का उपयोग करना आसान तरीका है। ध्यान रखें कि यह तुल्यकालिक है और जो भी थ्रेड आप इसे निष्पादित करते हैं उसे तब तक अवरुद्ध कर देगा जब तक कि fetch और लिखना पूरा न हो जाए।
उदाहरण के लिए:
// Create and escape the URL for the fetch
NSString *URLString = @"http://example.com/example.png";
NSURL *URL = [NSURL URLWithString:
[URLString stringByAddingPercentEscapesUsingEncoding:
NSASCIIStringEncoding]];
// Do the fetch - blocks!
NSData *imageData = [NSData dataWithContentsOfURL:URL];
if(imageData == nil) {
// Error - handle appropriately
}
// Do the write
NSString *filePath = [[self documentsDirectory]
stringByAppendingPathComponent:@"image.png"];
[imageData writeToFile:filePath atomically:YES];
कहाँ documentsDirectory
विधि this question से बेशर्म चोरी हो जाता है:
- (NSString *)documentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
return [paths objectAtIndex:0];
}
हालांकि, जब तक आप का इरादा यह सूत्र में बाँधना अपने आप को इस यूआई गतिविधि जबकि फ़ाइल डाउनलोड बंद हो जाएगा। आप इसके बजाय NSURLConnection और उसके प्रतिनिधि को देखना चाहते हैं - यह पृष्ठभूमि में डाउनलोड करता है और असीमित रूप से डाउनलोड किए गए डेटा के बारे में एक प्रतिनिधि को सूचित करता है, ताकि आप एनएसएमयूटेबलडेटा का एक उदाहरण बना सकें, फिर कनेक्शन के होने पर इसे लिखें। आपका प्रतिनिधि की तरह तरीकों शामिल हो सकता है:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// Append the data to some preexisting @property NSMutableData *dataAccumulator;
[self.dataAccumulator appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// Do the write
NSString *filePath = [[self documentsDirectory]
stringByAppendingPathComponent:@"image.png"];
[imageData writeToFile:filePath atomically:YES];
}
छोटे विवरण, dataAccumulator
घोषित करने और त्रुटियों से निपटने की तरह, पाठक :) करने के लिए छोड़ दिया जाता है
महत्वपूर्ण दस्तावेजों:
- 1. आईफोन ऐप में इंटरनेट और स्टोर से ऑडियो/वीडियो फ़ाइलों को कैसे डाउनलोड करें?
- 2. फ़ाइल डाउनलोड करने और AFNetworking के साथ दस्तावेज़ निर्देशिका में सहेजने के लिए कैसे?
- 3. रेल: http से फ़ाइल डाउनलोड करने और उसे डेटाबेस में सहेजने के लिए कैसे करें
- 4. आईआरएल से फाइल डाउनलोड करना और आईफोन
- 5. आईफोन विकास के लिए एक्सकोड में फ़ाइलों को दस्तावेज़ फ़ोल्डर में कैसे रखा जाए?
- 6. आईफोन एसडीके: आप दस्तावेज़ निर्देशिका में वीडियो फ़ाइलों को कैसे डाउनलोड करते हैं और फिर उन्हें खेलते हैं?
- 7. जावास्क्रिप्ट में डाउनलोड करने के लिए मैं गतिशील रूप से दस्तावेज़ कैसे बना सकता हूं?
- 8. मेवेन और एक * बहुत धीमा * इंटरनेट कनेक्शन: डाउनलोड को तेज करने के लिए कैसे?
- 9. वेबदृश्य से .apk फ़ाइलों को डाउनलोड करने के लिए डिफ़ॉल्ट ब्राउज़र का अनुकरण कैसे करें?
- 10. आईफोन ओएस पर सीधे डिस्क पर फ़ाइलों को कैसे डाउनलोड करें?
- 11. मुझे वेब से फ़ाइलों को डाउनलोड करने के लिए NSRLConnection पर ASIHTTPRequest क्यों पसंद करना चाहिए?
- 12. वीडियो कैप्चर करने और आईफोन
- 13. छवियों को डाउनलोड करें और आईफोन फोनगैप ऐप पर स्थानीय रूप से सहेजें
- 14. xmldocument को स्ट्रीम में सहेजने के लिए कैसे करें
- 15. आईफोन दस्तावेज़ निर्देशिका अधिकतम आकार
- 16. Autoconf में .m4 फ़ाइलों को शामिल करने के लिए कैसे?
- 17. symfony2 में जेनरेट किए गए दस्तावेज़ डाउनलोड करने के लिए लिंक कैसे बनाएं?
- 18. इवेंट सिस्टम: संपादक को सहेजने या सहेजने और बंद करने पर कैसे पता चलेगा?
- 19. सी # - अस्थायी इंटरनेट फ़ाइलों को कैसे हटाएं
- 20. निर्देशिका पर सभी निर्भरताओं और पैकेजों को डाउनलोड करने के लिए
- 21. मेमोरी मुद्दों और बड़ी फ़ाइलों को डाउनलोड
- 22. फ़ाइल को कंसोल करने और सहेजने के लिए प्रतिक्रिया शीर्षलेख मुद्रित करने के लिए कैसे?
- 23. जावा में रनटाइम पर JAR फ़ाइलों को डाउनलोड करना
- 24. CouchDB में सहेजने से पहले दस्तावेज़ फ़ील्ड निकालें?
- 25. आईफोन पर .flv फ़ाइलों को बजाना
- 26. उपयोगकर्ता को एकाधिक फ़ाइलों को डाउनलोड करने/अनुमति देने के लिए कैसे करें? (क्लाइंट साइड)
- 27. रेल में डेटाबेस में सहेजने से पहले मानों को प्रारूपित करने के लिए कैसे करें 3
- 28. फ़ाइलों को एक आईफोन पर कैसे सहेजना है?
- 29. सर्वर पर फ़ाइलों के लिए डाउनलोड करने योग्य सार्वजनिक लिंक कैसे बनाएं
- 30. फ़ाइलों को संपीड़ित करने के लिए
धन्यवाद ! Ummm ... तुल्यकालिक? क्या इसका मतलब यह है कि काम पूरा होने के दौरान मैंने "प्रगति व्हील/बार" का बेहतर उपयोग किया था? – RexOnRoids
सिंक्रोनस का मतलब है कि आपके प्रोग्राम में सभी गतिविधियां (अच्छी तरह से, मुख्य धागा) डाउनलोड समाप्त होने तक पूरी तरह से बंद हो जाएंगी। इसका मतलब है कि यूआई उपयोगकर्ता को जमे हुए दिखाई देगा, और डाउनलोड करने के बाद स्पिनर एनिमेटिंग शुरू नहीं करेंगे (उन्हें बहुत बेकार प्रस्तुत करना)। दूसरी विधि, एक एसिंक्रोनस डाउनलोड, आपके प्रोग्राम को पृष्ठभूमि में डाउनलोड करते समय अग्रभूमि में काम करने देता है। किसी भी तरह से, हाँ, आपको किसी प्रकार की प्रगति संकेतक का उपयोग करना चाहिए। – Tim