2009-09-23 8 views
5

में अनजिप करना मेरे पास कुछ संसाधन (ज़िप) हैं जिन्हें मेरे आईफोन एप्लिकेशन के साथ भेजना होगा। जब ऐप पहली बार लॉन्च होता है, तो इस ज़िप फ़ाइल को दस्तावेज़ फ़ोल्डर में स्थानांतरित/कॉपी करने की आवश्यकता होती है और उसे वहां से अनजिप कर दिया जाता है। उपयोगकर्ता एप्लिकेशन से इस पथ में और फाइलें जोड़ सकता है। क्या कोई सुझाव दे सकता है कि मैं इसे कैसे प्राप्त कर सकता हूं?आईफोन एसडीके - संसाधनों में ज़िप्ड सामग्री जोड़ना और फिर दस्तावेज़ फ़ोल्डर

धन्यवाद!

+0

नीचे दी गई विधियों के साथ एक मामूली कमी यह है कि आप इन संसाधनों को संग्रहीत करने के लिए दो बार स्थान ले रहे हैं; एक प्रतिलिपि आपके ऐप को बड़ी और दस्तावेज़ निर्देशिका में बैठी दूसरी प्रतिलिपि बना रही है। आप इस बारे में सोचना चाहेंगे कि क्या आप सिर्फ एक प्रतिलिपि के साथ रह सकते हैं। मुझे लगता है कि सवाल पूछने का सवाल यह है कि क्या आप इन संसाधनों को पढ़ने/लिखने या पढ़ने के लिए उम्मीद करते हैं। यदि उत्तरार्द्ध, तो मैं सुझाव दूंगा कि आपको उनकी प्रतिलिपि बनाने की आवश्यकता के आसपास एक रास्ता मिल जाए। – mahboudz

+0

अगर केवल पढ़ने के लिए, लेकिन आप उन्हें दस्तावेज़ फ़ोल्डर में चाहते हैं क्योंकि उपयोगकर्ता वहां कुछ अन्य फाइलें जोड़ सकता है, और आप उन्हें सभी एक ही स्थान पर रखना चाहते हैं, तो मैं फ़ाइलों की प्रतिलिपि बनाने के बजाय प्रतीकात्मक लिंक का उपयोग करने का सुझाव दूंगा। – mahboudz

उत्तर

6

ऊपर अपनी टिप्पणी के आधार पर:

कारण मैं एक संपीड़ित संसाधन जोड़ने के लिए कई फ़ाइलें हैं क्योंकि चाहते हैं। अगर मैं संपीड़ित नहीं करता तो मैं फ़ाइलों को व्यक्तिगत रूप से स्थानांतरित करने की आवश्यकता होगी। मैं को फ़ाइलों की सूची को कहीं भी बनाए रखने की आवश्यकता है ताकि मैं फ़ाइल नाम पढ़ सकूं और फिर उन्हें स्थानांतरित कर सकूं। मैंने सोचा ज़िप और अनजिपिंग एक आसान समाधान था।

आप सभी फ़ाइलों को अपने बंडल में किसी फ़ोल्डर में जोड़ सकते हैं। जब ऐप पहली बार लॉन्च होता है तो फ़ोल्डर के माध्यम से चलाने के लिए तेज गणना का उपयोग करें और उस फ़ोल्डर में जो भी पाता है, वह दस्तावेज़ फ़ोल्डर में प्रतिलिपि बनाता है। फ़ोल्डरों के भीतर फ़ोल्डरों को संभालना थोड़ा अधिक जटिल है (शायद रिकर्सन जोड़ें)। इस तरह आपको ज़िप या टैर के बारे में चिंता करने की ज़रूरत नहीं है, न ही फ़ाइलों को स्थापित करने के लिए निर्देशिका की निर्देशिका रखना है।

बस उन फ़ाइलों के फ़ोल्डर को रखें जिन्हें आप एक्सकोड के संसाधन फ़ोल्डर में चाहते हैं और इसे समूह के रूप में फ़ोल्डर के रूप में आयात करने के लिए कहें। इस तरह फाइलें आपके संसाधनों में एक फ़ोल्डर के अंदर स्थापित होती हैं, जैसे कि सभी जगहों पर व्यक्तिगत फाइलें।

संपादित करें:

अभी तक बेहतर, मैं एक फ़ोल्डर में सभी फ़ाइलें आप चाहते हैं डालने के बारे में क्या कहते हैं, अपनी परियोजना के लिए जोड़ है, लेकिन एक "समूह" के रूप में नहीं है, और उसके बाद पहली बार लॉन्च उपयोग पर:

[[NSFileManager defaultManager] copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error]; 

और यह आपकी पूरी निर्देशिका को एक स्थान से दूसरे स्थान पर कॉपी करेगा। आसान!

4

libz.dylib अपनी परियोजना में फ्रेमवर्क जोड़ें, और Deusty's NSData gzip category जोड़ें जो आपको संपीड़न/डिकंप्रेशन विधियां देगा।

+0

सभी फ़ाइलों को अस्थायी रूप से अस्थायी करने के लिए अनावश्यक, यदि मांग पर एक फ़ाइल (फ़ाइल में, या अधिमानतः, एनएसडेटा को) को असम्पीडित करना संभव है (ज़िप संग्रह व्यक्तिगत रूप से स्रोत फ़ाइलों को संपीड़ित करता है और मूल फ़ोल्डर पदानुक्रम रखता है)। एक अच्छा आईफोन-संगत lib के बारे में नहीं पता जो इसे आसान बनाता है। – avocade

3

हालांकि यह libz.dylib का उपयोग करके उपलब्ध है, यह वास्तव में अनावश्यक है क्योंकि यह आपको छोटी (यदि कोई है) स्थान बचाता है। फ़ोन पर स्थानांतरित होने पर आप एप्लिकेशन बंडल पहले ही संकुचित हो चुके हैं। संपीड़न के शीर्ष पर संपीड़न आमतौर पर थोड़ा अतिरिक्त संपीड़न पैदा करता है।

इसे अपने आप आज़माएं। आप पाते हैं कि अनजिप किए गए सामग्रियों के साथ आपके ऐप को शिपिंग करने से ज़िप्ड सामग्री जितनी अधिक जगह हो सकती है।

+0

कारण मैं एक संपीड़ित संसाधन जोड़ना चाहता हूं क्योंकि कई फाइलें हैं। अगर मैं संपीड़ित नहीं करता तो मुझे फ़ाइलों को अलग-अलग स्थानांतरित करने की आवश्यकता होगी। मुझे फ़ाइलों की सूची को कहीं भी बनाए रखने की आवश्यकता होगी ताकि मैं फ़ाइल नाम पढ़ सकूं और फिर उन्हें स्थानांतरित कर सकूं। मैंने सोचा कि ज़िप और अनजिपिंग एक आसान समाधान था। – Mithin

+0

आप 'libtar' (http://www.feep.net/libtar/) का उपयोग कर सकते हैं यदि आपको केवल संग्रह/अनारक्षित करने का कोई तरीका चाहिए और' ज़िप '-पेड संसाधन की समय जटिलता नहीं चाहिए। –

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