2011-03-13 16 views
6

में छवियों को संग्रहीत करना मैं वर्तमान में एक आईओएस एप्लिकेशन पर काम कर रहा हूं कि मैं उपयोगकर्ता को अपनी फोटो लाइब्रेरी से एप्लिकेशन में छवियों को जोड़ने की अनुमति देता हूं। मैं इन छवियों को डिवाइस फ़ाइल सिस्टम पर संग्रहीत करता हूं, और जब मुझे उनकी आवश्यकता होती है तो उन्हें एक्सेस करें (जब वे यूआईएसक्रोल व्यू में होते हैं, तो मैं उन्हें अक्सर एक्सेस कर सकता हूं)फ़ाइल सिस्टम बनाम कोर डेटा

मैं बस इस दृष्टिकोण पर कुछ राय प्राप्त करना चाहता था। क्या मुझे फाइल सिस्टम विधि के साथ रहना चाहिए, या इसके बजाय कोर Iata में इन छवियों को स्टोर करना फायदेमंद होगा।

इस पर किसी भी सुझाव की सराहना की जाएगी।

धन्यवाद।

उत्तर

5

मुझे नहीं लगता कि कोर डेटा वास्तव में इस प्रकार के डेटा को संग्रहीत करने के लिए डिज़ाइन किया गया था। ऐसा करने से छवि डेटा को SQL/relational डेटाबेस में संग्रहीत करने का नैतिक समकक्ष होगा जो आदर्श नहीं है।

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

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

0

मुझे लगता है कि उन्हें मूल डेटा में डालना धीमा हो जाएगा। फाइल सिस्टम बहुत तेज़ होने जा रहा है।

+0

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

3

आपको थंबनेल की तुलना में किसी भी चीज़ के लिए फ़ाइल सिस्टम विधि का उपयोग करना चाहिए।

एक बात के लिए, यदि आप कोर डेटा में स्टोर करते हैं तो आपको स्टोर करना होगा या तो डेटा या ट्रांसफॉर्म करने योग्य विशेषता है। किसी भी मामले में, आपके पास छवि में कनवर्ट करने के लिए एक अतिरिक्त कदम है। यदि आप एक फ़ाइल स्टोर करते हैं, तो आप इसे सीधे लोड करने के लिए UIImage का उपयोग कर सकते हैं।

मुख्य समस्या, हालांकि, स्मृति उपयोग है, एक दोषपूर्ण छवि को UIImage इच्छा की तरह स्मृति से शुद्ध नहीं किया जाएगा।

अपडेट 2012-9-20: यह उत्तर अब अप्रचलित है। कोर डेटा नंबर की बाहरी फाइलों में छवियों जैसे डेटा के बड़े हिस्से को संग्रहित करने के लिए अपनी प्रणाली है।

+1

कैसे समझें "ग़लत छवि को यूआईएममेज की तरह स्मृति से शुद्ध नहीं किया जाएगा।" –

+0

और मेरा थंबनेल लगभग 20 ~ 40 केबी है, लेकिन थंबनेल की संख्या उपयोगकर्ता के आधार पर हजारों हो सकती है। क्या मुझे तस्वीर को फाइल में सहेजना चाहिए? ps। सभी तस्वीरें एक सर्वर पर अपलोड हो जाएंगी। –