2012-12-11 14 views
42

NSManagedObject ऑब्जेक्ट्स बनाने के दौरान मुझे "आदिम डेटा प्रकारों के लिए स्केलर गुणों का उपयोग" कब करना चाहिए?
मुझे इसका क्या खर्चा होगा (क्या मेरा डेटा बेस प्रदर्शन में सुधार करेगा या अधिक हल्का होगा)?कोर डेटा "आदिम डेटा प्रकारों के लिए स्केलर गुणों का उपयोग करें" चेक बॉक्स

उत्तर

44

आईओएस 5 और ओएसएक्स 10.7 स्केलर गुणों से पहले ऑटो-जेनरेट नहीं किया जा सकता है और आपको सेटर और गेटर कार्यान्वयन जोड़ना पड़ता है, जिससे कुछ जुर्माना होता है। स्वतः उत्पन्न गुण अनुकूलित कर रहे हैं। मुझे किसी अन्य दंड के बारे में पता नहीं है।

स्केलर और गैर-स्केलर गुणों को डीबी में उसी प्रकार से दर्शाया जाता है, इसलिए डीबी के आकार में कोई बदलाव नहीं होगा।  

आपको इन गुणों तक पहुंचने के तरीके के आधार पर स्केलर का उपयोग करना चुनना चाहिए। उदाहरण के लिए, यदि आप उन्हें संग्रह (NSArray, NSSet, NSDictionary) में जोड़ने जा रहे हैं, तो आपको कोको ऑब्जेक्ट में स्केलर गुणों को लपेटने की आवश्यकता होगी।

+13

इसके अलावा, मैं scalars बजाय वस्तुओं का उपयोग कर लगता है कि आप एक अतिरिक्त राज्य देता है। – Tommy

23

कोर डेटा में कई सामान्य डेटा प्रकारों जैसे पूर्णांक, फ्लोट्स, बूलियन आदि के लिए समर्थन है। हालांकि, डिफ़ॉल्ट रूप से, डेटा मॉडल संपादक इन गुणों को प्रबंधित ऑब्जेक्ट उप-वर्गों में NSNumber गुणों के रूप में उत्पन्न करता है। यह अक्सर floatValue, boolValue, integerValue, या इन NSNumber ऑब्जेक्ट्स कोड कोड में समान कॉल के परिणामस्वरूप परिणाम देता है।

लेकिन हम केवल उन गुणों को उनके सही स्केलर प्रकार के साथ निर्दिष्ट कर सकते हैं, उदा। int64_t, float_t, या BOOL के रूप में, और यह कोर डेटा के साथ काम करेगा। NSManagedObject जेनरेटर ("आदिम डेटा प्रकारों के लिए स्केलर गुणों का उपयोग करें") की सहेजने वाली बातचीत में एक्सकोड का एक छोटा सा चेकबॉक्स भी है जो आपके लिए यह करता है।

स्रोत: `nil`: objc.io - Data Models and Model Objects

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