2010-02-15 15 views
24

मैं एक प्रगति पट्टी दिखाना चाहता हूं जबकि NSURLConnection के साथ डाउनलोड हो रहा है। चूंकि मुझे सर्वर से डेटा मिल रहा है, इसलिए मैं प्रत्येक प्राप्त पैकेज के लिए यूआई अपडेट कर सकता हूं। लेकिन समस्या यह है: मैं कैसे पता लगा सकता हूं कि मेरे पास पहले से कितना डेटा है, और कितना डेटा डाउनलोड करना है? शायद बाइट्स में ... और फिर मुझे प्रतिशत प्राप्त करने के लिए कुछ गणित करना है?फ़ाइल डाउनलोड करते समय NSRLConnection के लिए प्रगति पट्टी कैसे बनाएं?

उत्तर

63

अपने NSURLConnection प्रतिनिधि में, कुल सामग्री लंबाई जानने के लिए इस तरह कुछ लागू करें। सर्वर इस का समर्थन किया है, लेकिन यह सबसे अधिक संभावना स्थैतिक सामग्री के साथ ठीक से काम करेगा:

- (void)connection: (NSURLConnection*) connection didReceiveResponse: (NSHTTPURLResponse*) response 
{ 
    statusCode_ = [response statusCode]; 
    if (statusCode_ == 200) { 
     download_.size = [response expectedContentLength]; 
    } 
} 

और फिर इस तरह प्रगति अपडेट:

- (void) connection: (NSURLConnection*) connection didReceiveData: (NSData*) data 
{ 
    [data_ appendData: data]; 
    download_.progress = ((float) [data_ length]/(float) download_.size); 
    // Broadcast a notification with the progress change, or call a delegate 
} 

मेरे मामले में मैं एक डाउनलोड उदाहरण है कि size है और progress गुण। उनके पास वैश्विक DownloadManager ऑब्जेक्ट का स्वामित्व है जो डाउनलोड प्रगति या राज्य परिवर्तनों के इच्छुक पक्षों को सूचित करने का ख्याल रखेगा।

संबंधित मुद्दे