2012-01-04 12 views
8

El título prácticamente contiene la pregunta. Lanzamos una aplicación con un modelo de datos que tenía sus inversas mal configuradas. Los corrigimos en la próxima versión con una nueva versión del modelo de datos, pero Xcode aún muestra las advertencias al compilar la versión anterior del modelo de datos.¿Hay alguna forma de ignorar las advertencias inversas faltantes al compilar un modelo de objetos gestionados?

No quiero perder la capacidad de migrar documentos del antiguo modelo de datos al nuevo modelo de datos y estoy bastante seguro de que cambiar las inversas en el viejo modelo de datos hará precisamente eso. Entonces, me pregunto si hay una forma de suprimir esa advertencia solo para ese archivo. Me preocupa que alguien más pueda venir, ver la advertencia y decidir "arreglarla".

Editar: Según los comentarios de pe8ter, parece que deseo especificar la opción MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS para una única revisión del modelo de datos. No quiero desactivarlo en todo el proyecto, ni siquiera en todo el paquete, porque quiero que las advertencias aparezcan si las personas cometen este mismo error en el futuro.

+1

¿Intentó jugar con la configuración de Core Data en la configuración de compilación de su destino? Hay uno allí sobre la supresión de advertencias para ninguna relación inversa. – pe8ter

+0

Los extrañaba en la configuración del proyecto, pero parece que quiero deshabilitar MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS. Desafortunadamente, no veo una manera de hacerlo solo para una revisión de modelo único. Todo el paquete modelo está compilado; las revisiones individuales no se compilan por separado. Incluso si lo fueran, MOMC parece ignorar las opciones del compilador de un solo archivo especificadas en Build Phase. – Jablair

+0

Tengo este mismo problema porque Apple introdujo nuevas advertencias en una nueva versión de XCode que anteriormente no habían sido detectadas. Parece que utilizaré -w en todo el modelo y verificará las advertencias cuando lo publique. – Bjinse

Respuesta

1

No puedo decir que alguna vez haya necesitado hacer esto, pero podría intentar escribir un script que ejecute el compilador momc en su antiguo modelo de datos con MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS como quiera. A continuación, agregue una fase de compilación Ejecutar script para ejecutar el script cuando compile. Es posible que deba eliminar su modelo de datos anterior de su destino para evitar que Xcode intente compilarlo también. Puede usar la fase de compilación Copy Bundle Resources para incluir el modelo compilado en su aplicación construida.

Antes de que pueda escribir esa secuencia de comandos, tendrá que encontrar el compilador del modelo momc. This page dice que está en Library/Xcode/Plug-ins/XDCoreDataModel.xdplugin/Contents/Resources/, pero parece haberse movido para Xcode 4.

+0

Parece que momc se encuentra en/Developer/usr/bin/momc, o donde tenga instalado Xcode. Sin embargo, no creo que esto funcione. momc compila todo el paquete xcdatamodeld como una única entidad en lugar de hacer compilaciones separadas para * _v1.xcadatamodel, * _v2.xcdatamodel, etc. En este caso, quiero ignorar las advertencias en * _v2, pero las mantengo habilitadas para futuras revisiones. – Jablair

+0

Último esfuerzo: quite su modelo anterior del objetivo para que Xcode construya todos los modelos, pero aquel con advertencias activadas. Use una fase de compilación de guiones para compilar todos los modelos, incluido el anterior, y utilice el resultado para reemplazar el modelo que Xcode construye. Si eso no funciona, tendría que pensar que la respuesta es "no, no hay forma de cambiar la configuración de momc para un solo archivo". Buena suerte. – Caleb

2

Dado que solo está incluyendo el archivo para compatibilidad con versiones anteriores, y por lo tanto no desea que cambie alguna vez, recomendaría que ya compiló el archivo en el control de fuente y utilizando una fase de compilación de Copiar archivos para colocarlo en el lugar correcto.

Como solo estamos hablando de una única revisión en un paquete, es posible que necesite mantener una versión vacía y ficticia en el origen del modelo (para que tenga la numeración correcta). Entonces su fase Copiar archivos simplemente lo sobrescribirá.

+1

Me gusta esta idea. ¿Cómo harías exactamente eso? –

Cuestiones relacionadas