2011-01-17 12 views
17

मेरे पास एक साधारण कोर डेटा इकाई है जिसमें "विवरण" नामक एक स्ट्रिंग विशेषता थी। कार्यक्रम दुर्घटनाओं जब यह हिट:कोर डेटा इकाई के लिए एक विशेषता नाम के रूप में मैं "विवरण" का उपयोग क्यों नहीं कर सकता?

valueForKey:@"description" 

मैं "विवरण" विशेषता "पाठ" और समस्या को हल करने के लिए बदल दिया है।

ऐसा क्यों होता है?

क्या "विवरण" कोर डेटा में एक आरक्षित कुंजी शब्द है?

क्या यह NSObject से वर्णन विधि को कॉल करने से संबंधित है?

क्या इन आरक्षित कुंजी शब्दों का कोई संदर्भ है यदि वे मौजूद हैं?

उत्तर

23

क्योंकि यह NSObject में -description विधि का विरोध करता है (जो कोर डाटा गतिशील संपत्ति accessors और mutators उत्पन्न करता है याद - एक संपत्ति 'विवरण' नाम -description बुलाया एक्सेसर विधि बनाने की आवश्यकता होगी)। यह Core Data Programming Guide में प्रलेखित है और NSPropertyDescription Class Reference:

ध्यान दें कि एक संपत्ति नाम NSObject या NSManagedObject से किसी कोई पैरामीटर विधि नाम के समान नहीं हो सकता है। उदाहरण के लिए, आप संपत्ति को "विवरण" नाम नहीं दे सकते। NSObject पर सैकड़ों विधियां हैं जो संपत्ति के नामों के साथ संघर्ष कर सकती हैं- और यह सूची ढांचे या अन्य पुस्तकालयों से चेतावनी के बिना बढ़ सकती है। आपको बहुत सामान्य शब्दों (जैसे "फ़ॉन्ट", और "रंग") और शब्दों या वाक्यांशों से बचना चाहिए जो कोको पैराडाइम्स (जैसे "isEditing" और "ऑब्जेक्टस्पेसिफर") के साथ ओवरलैप करते हैं।

4

विवरण CoreData में एक आरक्षित कीवर्ड नहीं है, लेकिन यह सभी उद्देश्यों-सी वस्तुओं पर स्वाभाविक रूप से एक संपत्ति है। यह एनएसओब्जेक्ट कक्षा का हिस्सा है।

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/description

+0

यह एक (घोषित) संपत्ति नहीं है प्रति से लेकिन एक विधि नाम इसके बजाय। –

+0

प्रश्न यह है कि कोर डेटा किसी प्रबंधित ऑब्जेक्ट पर कुंजी @ "विवरण" को नापसंद करता है। नहीं: "विवरण" विधि क्या है? – Aaronium112

0

मुझे लगता है (हालांकि मैं सकारात्मक नहीं कर रहा हूँ) कि इस मुद्दे को कोर डाटा के क्रम एक्सेसर पीढ़ी इस मुद्दे पर है। कोर डेटा रनटाइम पर विशेषताओं के लिए एक्सेसर्स (और सेटर्स) को संश्लेषित करता है और उन एक्सेसर्स को उपयुक्त वर्ग (फिर से, रनटाइम पर) जोड़ता है। यदि कोर डेटा description विधि बनाता है, तो -[NSObject description] ओवरराइड करना और विधि में लेनदेन तर्क आदि डालना, तो -[NSObject description] पर कॉल करने वाला कोई भी कोड "बुरी तरह" व्यवहार कर सकता है।

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

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