2011-10-19 17 views
9

का उपयोग कर कस्टम क्लास को कैसे स्टोर करें मेरे पास एनएसओब्जेक्ट का विस्तार करने वाला एक वर्ग है। इसमें कुछ फ्लोट चर शामिल हैं। मैं इस कक्षा को कोर डेटा में स्टोर करना चाहता हूं।कोरडाटा

डेटा मॉडल में, ऐसा लगता है कि सबसे संभावित विकल्प आदेश CoreData का उपयोग कर इसे स्टोर करने के लिए एक बाइनरी डेटा के लिए इस वर्ग के चालू करने के लिए है।

क्या यह सही है? यदि हां, तो क्या कोई मुझे कृपया निर्देश दे सकता है कि मैं कोरडाटा का उपयोग करके अपनी कक्षा को कैसे स्टोर और पुनर्प्राप्त कर सकता हूं?

धन्यवाद,

उत्तर

0

मैं, कोर डाटा में एक नई इकाई बनाने नई इकाई में उन क्षेत्रों मॉडलिंग, और प्रबंधित वस्तु के नए कस्टम उपवर्ग उपयोग करने के लिए अपने कोड पुनर्रचना सुझाव है।

10

एक तरीका है कि आप पारदर्शी रूप से बचाया और कोर डाटा से भरी हुई अपने कस्टम वस्तु बना सकते हैं एक NSValueTransformer उपयोग करने के लिए है। यदि आप एक NSValueTransformer बनाते हैं जो आपकी कक्षा से NSData तक जा सकता है और इसके विपरीत, आप अपनी इकाई में विशेषता को चिह्नित कर सकते हैं जो इस वर्ग के अनुरूप होने योग्य है। इस डेटा से निपटने के दौरान कोर डेटा आपको इस प्रकार की ऑब्जेक्ट्स सेट और पुनर्प्राप्त करने देगा।

मेरे उत्तर में here मैं यूआईएममेज विशेषताओं के साथ ऐसा करने के लिए कोड दिखाता हूं, जो कोर डेटा द्वारा मूल रूप से समर्थित नहीं हैं। अपनी कस्टम ऑब्जेक्ट के लिए ऐसा कुछ करने के लिए, आपको इसे एनएससीओडी अनुपालन करने और स्टोरेज के लिए एनएसडीएटी इंस्टेंस में क्रमबद्ध करने के लिए अपने -encodeWithCoder: और -initWithCoder: विधियों को लागू करने की आवश्यकता होगी।

ऐप्पल के पास कोर डेटा प्रोग्रामिंग गाइड के "Non-Standard Persistent Attributes" खंड में अधिक दस्तावेज है, जिसमें मैक की एनएससीओलर कक्षा का उपयोग करने वाला एक उदाहरण शामिल है।

+0

जबकि मुझे लगता है कि @beryllium के रूप में ऐसा करना सबसे अच्छा है; ब्रैड सही है (बेशक)। –

0

मेरा पहला सुझाव एक इकाई है कि वस्तु प्रकार आप उपयोग कर रहे कोर डाटा में समर्थित हैं के रूप में इन मूल्यों को संग्रहीत करता है बनाने के लिए है।

आप इस मॉडल अक्सर/बदलने के लिए जा रहे हैं न कोर डाटा मॉडल में अपनी तरह के रूप में बदला जाने वाला होने के वस्तु की संपत्ति तो आप हमेशा सेट कर सकते हैं डेटा स्थानांतरण के साथ सौदा करना चाहते हैं। फिर यह सुनिश्चित करें कि आपकी कक्षा एनएससीओडिंग प्रोटोकॉल लागू करती है, एक बार ऐसा करने के बाद इसे ठीक काम करना चाहिए।

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