2009-10-11 12 views
6

Parece que el reciente Xcode 3.2 ha agregado algunas sutilezas de generación de código que (creo) faltaban antes de Snow Leopard.Xcode 3.2.1 - ¿Por qué las clases generadas por Core Data generan errores de compilación?

me dio los siguientes pasos:

  1. definir un modelo .xcdatamodel sencillo con unas pocas entidades, incluyendo uno (inversible) uno: muchos relación (un Endpoint tiene muchos objetos Subscription)

  2. Archivo -> Nuevo y seleccione la (clase de objeto gestionado) "sin icono". De ese asistente, seleccioné mis clases y me fui a las carreras.

  3. Hasta que, es decir, intenté construir. Consigo este resultado y no puedo averiguar:

símbolos no definidos: "_OBJC_METACLASS _ $ _ NSManagedObject", se hace referencia a: _OBJC_METACLASS _ $ _ suscripción de suscripción-B5BE258DF28BC03B.o _OBJC_METACLASS _ $ _ Punto final para estaciones de trabajo. O "_OBJC_CLASS _ $ _ NSManagedObject", hace referencia a partir de: _OBJC_CLASS _ $ _ suscripción de suscripción-B5BE258DF28BC03B.o _OBJC_CLASS _ $ _ Punto Final en la Endpoint.o ld: símbolo (s) no encontrado collect2: ld devolvió 1 código de salida

lo que me gustaría ayuda con:

  1. Si alguien tiene alguna idea de lo que he hecho mal, eso sería fantástico.

  2. Parece que la única manera de hacer que Xcode * re * genere sus clases es Archivar -> Nuevo y reemplazarlas nuevamente, lo que (entre otras cosas) da como resultado referencias duplicadas a las clases nuevas y su antiguo los archivos de clase quedan inutilmente en una carpeta movida de su proyecto. ¿Alguien sabe cómo mantener estos sincronizados correctamente? No he encontrado ninguna documentación de Apple que cubra las cosas nuevas.

Respuesta

25

¿Agregó el CoreData.framework a su proyecto (o lo quitó accidentalmente)? Esa podría ser la fuente del error de enlace.

Además, te recomiendo que revises MOGenerator, de Wolf Rentsch. Es un generador de códigos mucho más poderoso para clases de datos centrales que usa el patrón de brecha generacional. Puede regenerar clases automáticamente cada vez que guarde el modelo xcdata mientras conserva su código personalizado.

+0

Gracias por la respuesta. Pensé que sí, pero es posible que lo haya echado de menos. Miré brevemente a MOGenerator, pero no me tomé el tiempo de evaluarlo, porque parecía que Apple acababa de ejecutar una funcionalidad similar en Xcode 3.2, y no quería agregar una herramienta repentinamente obsoleta a mi flujo de trabajo.Viendo que la función de Xcode ni siquiera está realmente documentada, también puedo pasar el tiempo conociendo MOGenerator. ¡Gracias! –

+0

Trabajando para obtener MOGenerator y solo como un FYI para cualquiera que vea esta pregunta, desde el 10/13/09, Xcode 3.2.x ha roto la integración xmo'd: http://www.openradar.me/7289446 –

9

La forma más simple (y más frecuente, y más fácil de pasar) de que esto ocurra es si accidentalmente genera un nuevo conjunto de clases MOC sin eliminar las referencias a las antiguas (tal vez en un grupo diferente en su proyecto o algo) . Pasé demasiado tiempo golpeando mi cabeza contra XCode antes de darme cuenta de que esto era exactamente lo que había hecho.

+1

Exactamente qué me sucedió. Se regeneró una clase de objeto administrado pero se olvidó de cambiar la carpeta de destino, lo que generó dos referencias al mismo archivo en el proyecto. –

Cuestiones relacionadas