2011-02-25 12 views
8

मैंने अभी अपनी विकास मशीन पर mogenerator + xmo'd इंस्टॉल किया है और इसके साथ खेलना शुरू करना चाहूंगा। एकमात्र निर्देश जो मैं वास्तव में ऑनलाइन देख सकता था a previous SO post से था, और वे एक्सकोड 4 के साथ काम नहीं करते हैं (या कम से कम ⌘I मेटाडेटा को और नहीं खींचता है और मुझे नहीं पता कि कैसे)।मोगनरेटर और एक्सकोड 4

तो चीज़ों को चलाने और चलाने के लिए, क्या सभी को 0xको .xcdatamodeld की टिप्पणियों (जहां भी वे हैं) में जोड़ने की आवश्यकता है और कक्षाएं तब से सहेजने/अपडेट होने पर अपडेट की जाएंगी?

+0

एक्सकोड 4 अभी भी एनडीए के अधीन है, इसलिए आपको यहां कोई जवाब नहीं मिलना चाहिए/नहीं। – paulbailey

+1

ऐप्पल डेवलपर फ़ोरम आज़माएं। आप वहां एनडीए सामग्री पर चर्चा कर सकते हैं। – TechZen

+0

यदि आप अभी भी उत्तर में रुचि रखते हैं, तो आप इस समस्या को हल करने के लिए कमांड लाइन का उपयोग कर सकते हैं, मैं एक प्रतिक्रिया पोस्ट करूंगा जो आपके लिए – Ali

उत्तर

5

अब जब कि Xcode 4 यह अपने आप का जवाब खोजने की कोशिश करते हुए mogenerator

7

के लिए Issues पेज पर एक नजर डालें जारी की है, मैं esenciadev.com पर MOGenerator and Xcode 4 integration guide पाया। यह समाधान पुश-बटन एकीकरण नहीं है, लेकिन यह काम करता है। लिंक निर्देश विस्तृत है, लेकिन आम तौर पर आप:

  1. कॉपी अपनी परियोजना
  2. अपने लक्ष्य के निर्माण नियम जोड़े जब आप अपनी परियोजना का निर्माण दो शेल स्क्रिप्ट

चलाने के लिए में शेल स्क्रिप्ट, स्क्रिप्ट आपकी प्रोजेक्ट निर्देशिका में सभी .xcdatamodel फ़ाइलों पर MOGenerator चलाती है। निर्माण के बाद, यदि स्क्रिप्ट नई क्लास फ़ाइलों को उत्पन्न करती है, तो आपको उन्हें अपने प्रोजेक्ट में मैन्युअल रूप से जोड़ना होगा। बाद के निर्माण मौजूदा एमओ जेनरेटेड फाइलों को याद रखेंगे।

चेतावनियां:

  1. उदाहरण के निर्माण नियम आप अपने प्रोजेक्ट निर्देशिका के भीतर एक/scripts/फ़ाइल फ़ोल्डर में स्क्रिप्ट डाल मान लिया गया है। जब मैंने इस विवरण को अनदेखा किया (प्रोजेक्ट फ़ोल्डर बनाना लेकिन फ़ाइल फ़ोल्डर नहीं) मुझे एक बिल्ड त्रुटि मिली है। सुनिश्चित करें कि निर्माण नियम स्क्रिप्ट के फ़ाइल स्थान पर इंगित करता है।

  2. स्क्रिप्ट --base-class तर्क का उपयोग करता है। जब तक कि आपके मॉडल वर्ग कस्टम क्लास के उप-वर्ग (NSManagedObject नहीं) हैं, आपको स्क्रिप्ट से यह तर्क हटाना होगा। जैसे,

mogenerator --model "${INPUT_FILE_PATH}/$curVer" --output-dir "${INPUT_FILE_DIR}/" --base-class $baseClass
+0

जारी करने का समाधान करेगा, प्रदान किए गए ट्यूटोरियल में कुछ अनावश्यक कदम शामिल हैं। क्या किसी को पता है कि mogen.sh और mogend.sh दोनों की आवश्यकता क्यों है? एक कस्टम स्क्रिप्ट नहीं चलाएगी जो कि हेट डाटामॉडल के वर्तमान संस्करण पर मॉगनेटर को आसानी से कॉल करेगी? – Mike

+0

मुझे ऐसा लगता है। जब मैंने पोस्ट किया तो मैं mogenerator से अपरिचित था। अपनी टिप्पणी पढ़ने के बाद, मैंने mogend.sh स्क्रिप्ट का उपयोग करने की कोशिश की और ऐसा लगता है कि यह ठीक काम करता है। – jluckyiv

1

मैं एक स्क्रिप्ट "के चरण का निर्माण" में "नियम बनाएँ" की तुलना में अधिक विश्वसनीय हो पाया है।

अपने लक्ष्य के लिए "बिल्ड चरण" के तहत, "रन स्क्रिप्ट जोड़ें" के नीचे दिए गए बटन का चयन करें। रन स्क्रिप्ट को शीर्ष पर खींचें ताकि यह स्रोतों को संकलित करने से पहले निष्पादित हो सके।

याद रखें कि वास्तविक डेटा मॉडल फ़ाइलें (.xcdatamodel) एक पैकेज (.xcdatamodeld) के भीतर निहित हैं, और आपको केवल अपनी परियोजना के लिए नवीनतम डेटा मॉडल संकलित करने की आवश्यकता है।

(जैसा उचित कोण कोष्ठक में जगह पाठ) स्क्रिप्ट के लिए निम्न जोड़े

MODELS_DIR="${PROJECT_DIR}/<path to your models without trailing slash>" 
DATA_MODEL_PACKAGE="$MODELS_DIR/<your model name>.xcdatamodeld" 
CURRENT_VERSION=`/usr/libexec/PlistBuddy "$DATA_MODEL_PACKAGE/.xccurrentversion" -c 'print _XCCurrentVersionName'` 

# Mogenerator Location 
if [ -x /usr/local/bin/mogenerator ]; then 
    echo "mogenerator exists in /usr/local/bin path"; 
    MOGENERATOR_DIR="/usr/local/bin"; 
elif [ -x /usr/bin/mogenerator ]; then 
    echo "mogenerator exists in /usr/bin path"; 
    MOGENERATOR_DIR="/usr/bin"; 
else 
    echo "mogenerator not found"; exit 1; 
fi 

$MOGENERATOR_DIR/mogenerator --model "$DATA_MODEL_PACKAGE/$CURRENT_VERSION" --output-dir "$MODELS_DIR/" 

mogenerator के रूप में उपयुक्त करने के लिए विकल्प जोड़ें। --base-class <your base class> और --template-var arc=true आम हैं।

4

मेरे मॉडल फ़ाइल में परिवर्तन करने के बाद, मैं टर्मिनल से मैन्युअल रूप से मॉगनेटर चलाता हूं।Xcode 4 और एआरसी का उपयोग करना, यह काम कर देता है:

cd <directory of model file> 
mogenerator --model <your model>.xcdatamodeld/<current version>.xcdatamodel --template-var arc=YES 

शायद मैं कुछ बिंदु पर स्क्रिप्ट का निर्माण इस्तेमाल करेंगे, लेकिन टर्मिनल दृष्टिकोण पेंच करने के लिए बहुत सरल है।

0

यादृच्छिक युक्ति। यदि आपको अवैध निर्देश मिलता है: 4 जब आप मोगनरेटर चलाते हैं। इसे कमांड लाइन से इंस्टॉल करें:

$ brew update && brew upgrade mogenerator