मैं कुछ महीनों के लिए कोडिंग से छुट्टी ले लिया और वापस आया और Xcode8/iOS10/MacOS सिएरा साथ CoreData में परिवर्तन की खोज की।सही तरीके को बदलते
मैं उद्देश्य सी में नई NSManagedObject उपवर्ग पीढ़ी के आसपास मेरे सिर प्राप्त करने की कोशिश की है लेकिन वहाँ वेब पर वहाँ बाहर बहुत कम है। मैं कुछ चीजें मैं स्पष्ट की जरूरत है इससे पहले कि मैं अपने प्रोजेक्ट butchering शुरू और पूरी तरह से लेकिन पहले चीजों को खिलवाड़ है, कुछ बातें मैं चारों ओर poking से पता चला है कि वहाँ बाहर दूसरों के लिए उपयोगी हो सकती है ...
कहाँ बातें
स्वचालित रूप से उत्पन्न फ़ाइलों DerivedData फ़ोल्डर में गहरी दफन रहते हैं। USER-> लाइब्रेरी-> डेवलपर-> एक्सकोड-> DerivedData-> ProjectName-lotOfRandomLetters-> तब बनाएं जब तक आप व्युत्पन्न स्रोत-> CoreDataGenerated नहीं पाते हैं तब तक फ़ोल्डर खोलना जारी रखें।
स्वचालित रूप से उत्पन्न फ़ाइलों, अपनी परियोजना फ़ोल्डर या नाविक में दिखाई नहीं देते हैं, हालांकि, अगर वहाँ एक Xcode में कोई त्रुटि आप के लिए स्रोत प्रदर्शित करेगा है।
हालात Xcode उत्पन्न
तीन codegen सेटिंग उपलब्ध हैं - मैनुअल/कोई नहीं, कक्षा परिभाषा, और श्रेणी/एक्सटेंशन।
एक संस्थाओं codegen जब मैनुअल/कोई भी (जो पुराने व्यवहार था) पर सेट है संपादक-> बनाना NSManagedObject उपवर्ग अपनी परियोजना के अंदर 4 फ़ाइलें उत्पन्न करता है ...
इकाई + CoreDataClass.h का उपयोग कर NSmanagedObject उपवर्ग बनाने और इकाई + CoreDataClass.m और इकाई + CoreDataProperties.h और इकाई + CoreDataProperties.m
(पिछले संस्करण Xcode 7 Entity.h, Entity.m, इकाई + CoreDataProperties.h और इकाई + CoreDataProperties.m फ़ाइलें उत्पन्न)
तो ई एनटीटी का कोडेजन क्लास डेफिनिशन पर सेट है, एक्सकोड इन 4 फाइलों को स्वचालित रूप से व्युत्पन्न डेटा फ़ोल्डर में उत्पन्न करता है - प्रोजेक्ट नहीं, इन फ़ाइलों को तब एक टिप्पणी के साथ चिह्नित किया जाता है जिससे आप उन्हें बदल नहीं सकते हैं। संस्थाओं codegen श्रेणी/एक्सटेंशन पर सेट है
Xcode 2 फ़ाइलें उत्पन्न करता है। इन फ़ाइलों को एक टिप्पणी के साथ चिह्नित किया गया है जो आपको बताएंगे कि आप उन्हें बदलने के लिए नहीं हैं। ये ... हैं
इकाई + CoreDataProperties.h और इकाई + CoreDataProperties.m
इन 2 फ़ाइल एक Entity.h फ़ाइल उम्मीद कर रहे हैं परियोजना में होना और Xcode में कोई त्रुटि दिखाई देगा यदि अनुपस्थित। यह एक बार है कि आप एक्सकोड के भीतर इन फ़ाइलों में से किसी एक के लिए स्रोत देख पाएंगे।
क्या इन फ़ाइलों
+ CoreDataProperties फाइलों में के रूप में Xcode के उन उत्पन्न पिछले संस्करण एक अतिरिक्त के अलावा उत्पन्न फ़ाइलों ही दिखाई देते हैं। उनमें इकाई/NSmanagedObject के लिए सभी गुण/गुण होते हैं और उन इकाइयों को संभालने के तरीके होते हैं जिनमें कई या कई रिश्तों के लिए एक होता है। नया जोड़ा fetchRequest subclassing NSmanageObject की नई fetchRequest विधि के लिए एक विधि है।
प्रश्न
1) कक्षा परिभाषा अब codegen आप किसी भी अतिरिक्त गुण/कार्यक्षमता एक NSManagedObject उपवर्ग में जोड़ने के लिए की जरूरत नहीं है जब के रूप में यह अपने आप आपके लिए फ़ाइलों को अद्यतन करता के लिए स्पष्ट और सबसे अच्छा विकल्प है (जब आप परियोजना को cmd-s से सहेजते हैं)?
2) + CoreDataClass साथ फ़ाइलों का नामकरण एक वर्ग पर एक वर्ग है, जो अर्थ होगा वहाँ एक वर्ग इस पर एक विस्तार होने के लिए किया जाना चाहिए के लिए सम्मेलन इस प्रकार है।
मैं सही सोचते हैं कि इकाई + CoreDateClass ज/मी फ़ाइलों वर्ष Entity.h/मी फ़ाइलों के लिए एक सीधे प्रतिस्थापन हैं में हूं? और फ़ाइल नाम के बावजूद यह वास्तव में एक श्रेणी नहीं है?
3) नई NSManagedObject उपवर्गों के लिए मैं इकाई + CoreDataClass.h बजाय Entity.h का आयात किया जाना चाहिए?
4) मुझे अपने NSManagedObject उपवर्ग फ़ाइलों के सबसे को हटाने के द्वारा अपने प्रोजेक्ट uncluttered करने के लिए, मैं सिर्फ Xcode में फ़ाइलों को हटाने और संस्थाओं कक्षा परिभाषा को codegen या सेट करूँ ... चाहते हैं
तहत जादू है जब आप #import entity.h को करने का प्रयास करते हैं तो इकाई + CoreDataClass को देखने वाला हुड या मुझे #import entity.h पर प्रत्येक संदर्भ को देखना होगा और उन्हें #import इकाई + CoreDataClass.h में बदलना होगा?
5) क्या मैं यह मानने में सही हूं कि अगर मैं एक एनएसएमएनेज्ड ऑब्जेक्ट सबक्लास चाहता हूं जहां मैं एक संपत्ति और एक विधि जोड़ना चाहता हूं जिसे मुझे श्रेणी/एक्सटेंशन में कोडजन सेट करना चाहिए?
6) मैं श्रेणी/एक्सटेंशन मैं अपने खुद के NSmanagedObject उपवर्ग फ़ाइल बनाने के लिए चुनते हैं, तो अपने बस इकाई + CoreDataClass.h नहीं entity.h?
7) अगर इकाई + CoreDataClass.h इकाई के लिए नया स्वीकृत नामकरण प्रारूप है। फ़ाइल जेनरेट की गई श्रेणी/एक्सटेंशन फ़ाइल एक सादे इकाई के लिए क्यों दिखती है। एक इकाई के बजाय नाम फ़ाइल + CoreDataClass.h फ़ाइल ? क्या यह सिर्फ एप्पल के हिस्से पर एक असंगतता है और मुझे बस कुछ स्वीकार करना चाहिए या क्या मुझे कुछ याद आ रहा है जिसके बारे में मुझे पता होना चाहिए?
धन्यवाद।
कुछ उत्तर खोजें और संबंधित डब्ल्यूडब्ल्यूडीसी वीडियो [यहां] (http://stackoverflow.com/a/39933534/1457385) के लिए एक लिंक खोजें। – shallowThought