Xcode 4, कोर डेटा मॉडल संस्करण - वर्तमान संस्करण सेट करें


183

मैं इस बात को लेकर असमंजस में हूँ कि संस्करण मॉडल बनाने के बाद उपयोग करने के लिए मॉडल को सेट करने के लिए Xcode 4 में निम्न कार्य कैसे करें।

डिज़ाइन> डेटा मॉडल> ​​वर्तमान संस्करण सेट करें


15
मैं चाहता हूं कि मैं इसे हर बार वोट कर सकूं क्योंकि मुझे इसका संदर्भ देना है।
इरिक

जवाबों:


329
  1. शीर्ष स्तर पर क्लिक करें .xcdatamodelId फ़ाइल (एक है जिसमें बच्चों के रूप में .xcdatamodel के कई संस्करण हैं)।
  2. सुनिश्चित करें कि यूटिलिटीज साइडपेन दिखाई दे रहा है (यदि विंडो के शीर्ष दाईं ओर स्थित तीसरे "व्यू" बटन पर क्लिक न करें)।
  3. यूटिलिटीज साइडपैन में फ़ाइल इंस्पेक्टर (शीर्ष बाईं ओर थोड़ा पेपर आइकन) चुनें
  4. आप "संस्करणित कोर डेटा मॉडल" को एक समूह के रूप में देखेंगे, इसलिए "वर्तमान" ड्रॉप-डाउन को अपने नए संस्करण में बदल दें।

2
बहुत अच्छे धन्यवाद! यह भी पाया कि व्यू> यूटिलिटीज> फाइल इंस्पेक्टर
नैट पॉटर

अभी भी Xcode 3 और 4 के बीच परिवर्तनों के लिए उपयोग हो रहा है, धन्यवाद!
क्रिस


15

Xcode 4 में, यदि आपको अपने * .xcdatamodeld फ़ाइल का चयन करने पर फ़ाइल निरीक्षक के "संस्करणित कोर डेटा मॉडल - वर्तमान" अनुभाग के तहत केवल आपके डेटा मॉडल का एक संस्करण दिखाई देता है; या आपके पास अपनी * .xcdatamodel फ़ाइल का दूसरा संस्करण है, जो Xcode के प्रोजेक्ट नेविगेटर में xcdatamodeld बंडल के बाहर दिखा रहा है, नीचे पढ़ें।

इसे ठीक करने के लिए:

1) दोनों में .xcdatamodeld और * .xcdatamodel दोनों को Xcode से प्रोजेक्ट नेवीगेटर में राइट क्लिक करके और "डिलीट" करने के लिए निकालें।

2) जब Xcode द्वारा संकेत दिया जाता है, तो केवल संदर्भ निकालें (बहुत महत्वपूर्ण) पर क्लिक करें ।

3) यदि कोई कैशिंग चल रही है, तो अच्छे उपाय के लिए Xcode को पुनः आरंभ करें।

4) एकल * .xcdatamodeld फ़ाइल को फिर से जोड़ें जिसमें * .xcdatamodel दोनों फ़ाइलें हों।

Xcode को अब रिश्तों को पहचानना चाहिए और प्रोजेक्ट नेविगेटर में * .xcdatamodeld फ़ाइल का विस्तार करने की अनुमति देनी चाहिए। माता-पिता xcdatamodeld बंडल के तहत .xcdatamodel दोनों फ़ाइलों को दिखाने के लिए, वर्तमान मॉडल के बगल में एक हरे रंग का चिह्न भी दिखा सकते हैं। इससे आपको केवल एक संस्करण दिखाने के बजाय फ़ाइल निरीक्षक में डेटा मॉडल के वर्तमान संस्करण का चयन करने की अनुमति मिल सकती है।


और इस तरह सिर खुजलाना समाप्त हो जाता है।
स्टीव मैडसेन

मैंने गलती से पैरेंट xcdatamodelid को एप्लिकेशन बंडल में बदल दिया और इस समाधान में मदद मिली!
मॉर्फ85

4

Xcode 4.2 के लिए

  1. YourModel.xcdatamodeld पर क्लिक करें

  2. साइड फलक को दृश्यमान बनाएं

  3. "संस्करणित कोर डेटा मॉडल" के तहत, "वर्तमान ड्रॉप डाउन बॉक्स" चुनें, आप डेटा मॉडल का चयन करें।

अब हरे टिक मार्क को आपके वर्तमान डेटा मॉडल में स्थानांतरित कर दिया गया है।


"ऑब्जेक्ट लाइब्रेरी" में "संस्करणित मुख्य डेटा मॉडल" जैसा कुछ नहीं है। पहला उत्तर (Mac_Cain13 से) सही है, हालांकि मुझे लगता है कि मेरे मॉडल के बाहर एक अजीब बग है जो Xcode में .modeld के बाहर है।
स्टुफ़ एमसी

@StuFFmc - Xcodeatamodel फ़ाइल के Xcodeatamodeld बंडल के बाहर Xcode के प्रोजेक्ट नेविगेटर में होने के मुद्दे को ठीक करने के लिए नीचे मेरी पोस्ट देखें।
एंड्रयू

2

"वर्तमान संस्करण" के लिए Xcode की सहायता में खोज करने से एक नुस्खा मिलता है "एक प्रबंधित ऑब्जेक्ट मॉडल का वर्तमान संस्करण सेट करना" जो यह बताता है कि यह कैसे करना है ...


1

विषय से थोड़ा हटकर, लेकिन यदि आप इस प्रश्न तक पहुँच गए हैं कि अपने मॉडल का पहला नया संस्करण कैसे बनाया जाए (जैसे मैंने किया): xcdatamodel फ़ाइल पर क्लिक करें >> मेनू "संपादक" >> मॉडल संस्करण जोड़ें

यह मॉडल के संस्करण की शुरुआत करेगा।


0

इसने मेरे लिए काम किया: https://developer.apple.com/library/mac/recipes/xcode_help-core_data_modeling_tool/Articles/setting_current_version.html

कोर डेटा मॉडल संस्करण का चयन करना

अब मेरा ऑटोमैटिक db मॉडल माइग्रेशन काम करता है (डेलिगेट में ऑटोमैटिक माइग्रेशन कोड के साथ)।


-1

आप CoraData से सेटर विधि का भी उपयोग कर सकते हैं ...
बस कुछ इस तरह से करें ...

अपने CustomCoreDataManager.m में :

#import "ObjectiveRecord.h"

और इस तरह init विधि को बुलाओ

- (instancetype)init {

    self = [super init];

    if (self) {           
        [[CoreDataManager sharedManager] setModelName:@"YourModelName"];
    }

    return self;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.