Xcode में पुराने / अप्रयुक्त डेटा मॉडल संस्करण को कैसे हटाएं


163

मैं Xcode में पुराना डेटा मॉडल कैसे हटा सकता हूं? मेनू पर विकल्प अक्षम है। (मैं जिन मॉडलों को हटाना चाहता हूं, उन्हें जनता के लिए जारी नहीं किया गया है - वे अंतरिम विकास मॉडल हैं।)


क्या आपका मतलब है "संपादित करें" मेनू के तहत "हटाएं" विकल्प अक्षम है (जबकि फ़ाइल निरीक्षक में आपकी पुरानी डेटा मॉडल फ़ाइल चयनित है)? या आप कुछ और पूरी तरह से मतलब है?
बजे माइकल ड्यूटर्मन

हां, संपादित करें मेनू के अंतर्गत डिलीट विकल्प, और नियंत्रण-राइट-क्लिक मेनू के तहत (और कोई भी मेनू जो मुझे मिल सकता है) अक्षम है। मुझे पता है कि कुछ लोग पुराने / अप्रयुक्त संस्करणों को हटाने के लिए एक पिछले एक्सकोड में जा रहे हैं, लेकिन मेरे पास एक भी स्थापित नहीं है।
SAHM

माइकल, क्या आप xCode 4 में ऐसा करने में सक्षम हैं?
SAHM

हाँ ... मैंने कभी नहीं देखा है कि मेरे किसी भी XCode 4 प्रोजेक्ट के लिए "हटाएं" मेनू विकल्प अक्षम है।
माइकल Dautermann

Xcdatamodel के लिए सुरक्षित रूप से? दूसरों को xcdatamodels XCode 4 को हटाने के साथ एक ही समस्या थी .. मैंने अभी कोई समाधान पोस्ट नहीं किया है।
SAHM

जवाबों:


374

यह एक हैक है, लेकिन यह मेरे लिए काम करता है:

  1. मॉडल का वर्तमान संस्करण Xcode में सेट करें जिसे आप रखना चाहते हैं
  2. अपनी परियोजना से .xcdatamodeld निकालें (राइट-क्लिक करें -> हटाएं -> केवल संदर्भ निकालें )
  3. खोजक में .xcdatamodeld पैकेज की सामग्री दिखाएं (राइट क्लिक करें -> पैकेज सामग्री दिखाएं)
  4. वह .xcdatamodel फ़ाइल (ओं) को हटाएँ जिन्हें आप अब और नहीं चाहते हैं
  5. अपनी परियोजना में .xcdatamodeld फ़ाइल पुनः जोड़ें

यह किसी भी प्रोजेक्ट मेटाडेटा फ़ाइलों को मैन्युअल रूप से संशोधित करने की आवश्यकता को समाप्त करता है।


2
मैंने इस तकनीक की कोशिश की और पाया कि जिस तरह से मेरे मॉडल संस्करणों का नाम दिया गया था, उसके कारण मॉडल संस्करण को अनुचित तरीके से पुन: सॉर्ट किया गया और गलत डिफ़ॉल्ट संस्करण को प्रोजेक्ट में xcdatamodel फ़ाइल के रूप में पुन: जोड़ा गया। ऐसा इसलिए हो सकता है क्योंकि मैं 38 मॉडल संस्करणों में हूं और मैंने डिफ़ॉल्ट संस्करण नाम नहीं बदला है, इसलिए संस्करणों को "MY_APP 37.xcdatamodel" नाम दिया गया है। मैं 38 को हटाना चाहता था। आयात पर, इसे शाब्दिक क्रम में खींचा गया था, जिसका अर्थ "MY_APP 10.xcdatamodel" पहले था, और इसे डिफ़ॉल्ट के रूप में चुना गया था। मेरे मामले में आदर्श नहीं है।
माइक

1
माइक - मेरे लिए एक ही समस्या है, हालांकि मैं परियोजना में पुन: व्यवस्थित करने में सक्षम था। किसी भी प्रमुख नाटक के बिना एक पाठ संपादक में pbxproj। फिर भी आदर्श नहीं।
इयान करशॉ

1
यह Xcode 5.1.1 के साथ काम नहीं कर रहा है। पहले, कई छोटे मॉडल परिवर्तनों और बढ़े हुए मॉडल संस्करण संख्याओं के साथ, हल्के ऑटो-माइग्रेशन ने सही ढंग से काम किया। हालांकि, इस दृष्टिकोण का उपयोग करके सभी बाहरी "विकास-केवल" मॉडल निकालने की कोशिश करने के बाद मुझे त्रुटि मिलती है: "त्रुटि: माइग्रेशन के लिए स्वचालित रूप से मैपिंग मॉडल का पता नहीं लगा या स्वचालित रूप से अनुमान लगाया जा सकता है"।
दालमाज़ियो

1
6.4 संदर्भों को हटाने का कोई विकल्प नहीं है। यह बस हटा दिया गया था। बाकी के कदम काम करने लगे थे
noobsmcgoobs

1
यह Xcode 10.2.1 में काम करता प्रतीत होता है। मेरा माइग्रेशन कुछ विशेषता नाम परिवर्तन था इसलिए कुछ भी बड़ा नहीं था।
गैविन

35

मुझे बस ऐसा करने की जरूरत है। मैंने एक नया मॉडल संस्करण बनाया, तब मुझे महसूस हुआ कि मुझे इसकी आवश्यकता नहीं है। मुझे यह जानकर आश्चर्य हुआ कि एक्सकोड से इसे हटाने का कोई तरीका नहीं था (जो मुझे मिल सकता था)। फिर भी, इसे हटाने के लिए मैंने निम्नलिखित कार्य किए:

पहले मैंने यह सुनिश्चित किया कि यह मेरा वर्तमान मॉडल संस्करण नहीं था। फिर मैं फाइंडर के पास गया और अपनी * .xcdatamodeld फाइल ढूंढी। उस पर राइट क्लिक करें और पैकेज सामग्री दिखाएं। वहां आपको वास्तविक मॉडल फ़ाइल मिलेगी और इसे हटा सकते हैं।

यह अभी भी इसे Xcode से नहीं हटाता है और यह Files और Group में लाल दिखाई देगा। इसे रोकने के लिए खोजक और शो पैकेज सामग्री को अपने मुख्य * .xcodeproj फ़ाइल पर वापस जाएं (आप यह सुनिश्चित करना चाहते हैं कि आपके पास पहले इसका बैकअप हो)। वहाँ खुले और संपादित करें project.pbxproj अपने मॉडल संस्करण नाम पर एक खोज करते हैं, मेरे मामले में "अंतराल 8"। मेरे लिए यह दो अलग-अलग लाइनों में दिखाई दिया। मैंने इन पंक्तियों को हटा दिया है और अब इसे पूरी तरह से Xcode से हटा दिया गया है।


1
@Daniel_Wood, हाँ, मैंने पाया था कि इसे मैन्युअल रूप से भी कैसे करना है, लेकिन बाहर देखो। यह लाइन के नीचे कुछ समस्याएं पैदा कर सकता है ... मुझे इसे कई बार फिर से करना पड़ा, यह कभी-कभी सक्रिय और गैर-सक्रिय संस्करणों पर स्विच करना भी समाप्त कर देता है, फिर जब आप सही संस्करण को रीसेट करते हैं, तो यह इसे स्थानांतरित नहीं करता है सूची के शीर्ष (कभी-कभी) जो अधिक समस्याओं का कारण बनता है! हालांकि इनपुट के लिए बहुत बहुत धन्यवाद। यह विचित्र लगता है कि उन्होंने इस क्षमता को हटा दिया होगा - हमें कभी भी .xcodeproj फ़ाइल में नहीं जाना चाहिए!
SAHM

2

यह मेरे लिए XCode 10.3 में काम कर रहा था जब पूरे मॉडल को हटाते हुए और इसे फिर से जोड़ते हुए आदेश जारी किए बिना:

  1. आप जिसे हटाना चाहते हैं, उसके अलावा किसी भी मॉडल संस्करण का चयन करें।
  2. XCode से, .xcdatamodeld फ़ाइल पर राइट-क्लिक करें और 'शो इन फाइंडर' चुनें।
  3. XCode को बंद करें।
  4. खोजक में, उसी फ़ाइल पर राइट-क्लिक करें और 'पैकेज सामग्री दिखाएँ' चुनें।
  5. उस मॉडल का नाम लिखें जिसे आप निकालना चाहते हैं, फिर फाइंडर से इसे हटाएं।
  6. फ़ाइंडर में अभी भी, प्रोजेक्ट फ़ाइल (.xcodeproj) पर नेविगेट करें।
  7. एटम या किसी अन्य संपादक के साथ राइट-क्लिक करें और खोलें ।
  8. 'प्रोजेक्ट' पैन ओपन प्रोजेक्ट से। pbxproj फ़ाइल।
  9. आपके द्वारा हटाए गए मॉडल नाम वाली सभी पंक्तियों को हटा दें (उदाहरण: "ABC 17.xcdatamodel")। आपको निम्न के समान दो लाइनें मिलेंगी:

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * / = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; पथ = " एबीसी 17.xcdatamodel "; sourceTree = ""; };

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /,

    ध्यान दें कि अगर आपको तीसरी लाइन मिलती है तो यह कुछ इस तरह होगी:

    currentVersion = 9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /;

    इसका मतलब है कि यह वर्तमान में चयनित मॉडल है। इस लाइन को कभी डिलीट न करें। बस टेक्स्ट को दूसरे मॉडल संस्करण में बदलें।

  10. XCode को फिर से खोलें।


-4

मेरा जवाब बिल्कुल भी विशिष्ट नहीं है, लेकिन यह त्वरित और काम करता है। Git का उपयोग करने वालों के लिए। आप केवल अस्थिर परिवर्तनों को छोड़ सकते हैं।

git stash save --keep-index

फिर आप चाहें तो उस स्टैश को एक git stash dropकमांड से ड्रॉप कर सकते हैं।

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