2010-09-22 9 views
20

कोर डेटा का उपयोग कर Im। मेरे पास प्रकार की विशेषता के साथ एक इकाई है। क्या कोई तरीका है कि मैं वर्तमान दिनांक के रूप में डिफ़ॉल्ट मान सेट कर सकता हूं?आईफोन कोर डेटा: वर्तमान डेटा के रूप में दिनांक डिफ़ॉल्ट मान

धन्यवाद

उत्तर

34

आप "अब" मॉडल में इस्तेमाल कर सकते हैं, लेकिन कोर डाटा का मूल्यांकन करता है कि संकलन समय पर, रनटाइम नहीं ('CURRENTDATE' या विशेषता का डिफ़ॉल्ट मान में कुछ? प्रवेश करने की तरह)। आप संकलन की तारीख अपने मॉडल चूक में जमा हो जाती है, जो शायद नहीं है मिल जाएगा कि आप क्या चाहते:

http://iphonedevelopment.blogspot.com/2009/07/core-data-default-dates-in-data-model.html

आज की तारीख का एक डिफ़ॉल्ट संपत्ति के मूल्य सुनिश्चित करने के लिए सबसे विश्वसनीय तरीके से -awakeFromInsert ओवरराइड करने के लिए है एक NSManagedObject उपclass और वर्तमान तारीख असाइन करें।

- (void) awakeFromInsert 
{ 
    [super awakeFromInsert]; 
    self.date = [NSDate date]; 
    // or [self setPrimitiveDate:[NSDate date]]; 
    // to avoid triggering KVO notifications 

} 

नोट: यदि आप नेस्टेड प्रबंधित वस्तु संदर्भों (या UIManagedDocument) का इस्तेमाल कर रही है, तो उपरोक्त अपेक्षा के अनुरूप काम नहीं होगा। यह सलाह केवल एक प्रबंधित ऑब्जेक्ट संदर्भों का उपयोग करते समय लागू होती है।

+2

यह सही नहीं है क्योंकि जागने के लिए हर बार NSManagedObject बनाया जाएगा। विभिन्न NSManagedObject को अलग-अलग धागे में बनाया जा सकता है जबकि वे एक ही कोरडाटा इकाई का प्रतिनिधित्व करते हैं। – Kamchatka

+0

एक ही ऑब्जेक्ट का प्रतिनिधित्व करने वाले दो अलग-अलग धागे में एक प्रबंधित ऑब्जेक्ट बनाना कोर डेटा भौतिकी के नियमों का उल्लंघन करेगा। और निश्चित रूप से कुछ ऐप तर्क त्रुटि का संकेतक बनें। ऐसा कुछ करना एक अनुशंसित अभ्यास नहीं है। –

+0

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

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