2011-02-25 21 views
8

Acabo de instalar mogenerator + xmo'd en mi máquina de desarrollo y me gustaría comenzar a jugar con él. Las únicas instrucciones que realmente pude encontrar en línea fueron de a previous SO post, y esas no funcionan con XCode 4 (o al menos ⌘No vuelvo a subir los metadatos y no sé cómo).Mogenerator y Xcode 4

Para que todo funcione, ¿es necesario agregar xmod en los comentarios del .xcdatamodeld (donde sea que estén) y las clases se generarán/actualizarán en guardar a partir de ese momento?

+0

Xcode 4 todavía está sujeto a una NDA, por lo que no debería/no podrá obtener una respuesta aquí. – paulbailey

+1

Pruebe los foros de desarrolladores de Apple. Puede hablar de material de NDA allí. – TechZen

+0

Puede usar la línea de comando para resolver este problema, si todavía está interesado en la respuesta, publicaré una respuesta que resolverá el problema por usted – Ali

Respuesta

5

Ahora que Xcode 4 es liberado Tome un vistazo a la página de Issues mogenerator

7

Mientras trata de encontrar esta respuesta a mí mismo, me encontré MOGenerator and Xcode 4 integration guide en esenciadev.com. Esta solución no es una integración de botón, pero funciona. El enlace tiene instrucciones detalladas, pero en general:

  1. Copiar los scripts de shell en su proyecto
  2. Añadir reglas de generación a su destino para ejecutar las dos secuencias de comandos shell

Cuando se construye su proyecto, la secuencia de comandos ejecuta MOGenerator en todos los archivos .xcdatamodel en su directorio de proyecto. Después de la compilación, si la secuencia de comandos genera nuevos archivos de clase, debe agregarlos manualmente a su proyecto. Las compilaciones subsiguientes recordarán los archivos MO-Generated existentes.

Advertencias:

  1. de la regla de generación ejemplo asume que puso los scripts en la carpeta de secuencias de comandos// archivo en el directorio del proyecto. Cuando ignoré este detalle (creando una carpeta del proyecto pero no una carpeta del archivo) recibí un error de compilación. Asegúrese de que la regla de creación apunte a la ubicación del archivo del script.

  2. El script usa el argumento --base-class. A menos que las clases de modelo sean subclases de una clase personalizada (no de NSManagedObject), debe eliminar este argumento del script. Por ejemplo,

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

El tutorial proporcionado parece incluir algunos pasos innecesarios. ¿Alguien sabe por qué se necesitan tanto mogen.sh como mogend.sh? ¿No sería adecuado ejecutar un script personalizado que simplemente llame a mogenerator en la versión actual del modelo de datos? – Mike

+0

Creo que sí. No estaba familiarizado con Mogenerator cuando publiqué. Después de leer tu comentario, traté de usar el script mogend.sh y parece funcionar bien. – jluckyiv

1

he encontrado una secuencia de comandos en la "construcción de Fases" para ser más fiable que la "construcción de reglas".

En "Fases de compilación" para su objetivo, elija el botón en la parte inferior para "Agregar secuencia de comandos de ejecución". Arrastre el script de ejecución a la parte superior para que se ejecute antes de compilar las fuentes.

Recuerde que los archivos del modelo de datos reales (.xcdatamodel) están contenidos dentro de un paquete (.xcdatamodeld), y que solo necesita compilar el último modelo de datos para su proyecto.

Añadir al (sustitución de texto en ángulo entre paréntesis en su caso) siguiente a la secuencia de comandos

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/" 

añadir opciones a mogenerator según corresponda. --base-class <your base class> y --template-var arc=true son comunes.

4

Después de hacer cambios en mi archivo de modelo, simplemente ejecuto mogenerator manualmente desde el terminal.El uso de Xcode 4 y ARC, esto hace el truco:

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

Tal vez voy a utilizar scripts de creación en algún momento, pero el enfoque terminal es demasiado simple para meter la pata.

0

Consejo aleatorio. Si obtiene instrucción ilegal: 4 cuando ejecuta mogenerator. Instálelo desde la línea de comando:

$ brew update && brew upgrade mogenerator