2011-06-01 7 views
7

Estoy tratando de crear una aplicación basada en documentos para la revisión de cerveza que le permita ingresar sus notas. Construí el modelo en Core Data y la vista en Interface Builder. Siguiendo algunos tutoriales basados ​​en Xcode 3, me dicen que conecte el nuevo NSArrayController al managedObjectContext del propietario del archivo. Si intento hacer esto en Xcode 4, aparece un signo de exclamación en un círculo junto a "Model Key Path" en el inspector para NSArrayController.¿A qué enlaza el contexto de objetos gestionados de NSArrayController en Xcode 4?

De hecho, puedo cargar el archivo .xib en el Interface Builder en Xcode 3, hacer esa conexión y luego compilarla en Xcode 4 y ejecutarla, pero cada campo genera un error de validación.

El modelo tiene una entidad llamada Scoresheet, que tiene una propiedad denominada date, que es un NSDate. Pero si lo vinculo al valor de un NSDatePicker y trato de guardarlo en el disco, dice que tengo "múltiples errores de validación". ¿Cómo puede que ser? Ambos son NSDates, ¿verdad? En realidad, tengo el mismo problema con las ataduras de todo; ninguno de mis objetos UI funcionará con mi modelo.

Lo único que puedo entender es que hay un problema en la conexión entre el propietario del archivo y NSArrayController.

No he escrito ningún código en este momento, porque entiendo que no debería tener que solo vincular los campos de IU y los datos de núcleo. ¿Es diferente porque estoy usando una aplicación basada en documentos? (Tampoco puedo hacer que funcione en una aplicación de ventana única)

Una respuesta de "no utilizar datos principales" no va a ser productiva; Sé que puedo recurrir a un objeto de datos normal. Me gustaría resolver esto en el contexto de Core Data si es posible.

TIA!

(Actualización: esta pregunta parece molestar a mucha gente. He consultado el libro Zarra sobre Core Data, el libro Hillegas sobre Cocoa Programming y dos libros O'Reilly. Todos parecen estar basados ​​en Xcode 3.)

+0

¿Qué ocurre si agrega un contexto de objeto administrado al archivo xib?En un proyecto de prueba pude vincular un controlador de matriz al contexto de objeto gestionado, pero recibí un error cuando ejecuté el proyecto diciendo que no podía crear un NSArray de la clase NSManagedObjectContext. Pero podría funcionar para usted ya que tiene un modelo de datos que funciona y yo tenía un modelo de datos ficticio. –

+0

El propietario del archivo en el xib debe ser la clase de su documento, como ImHuntingWabbits declaró en su respuesta. ¿Qué clase te has propuesto? ¿Y a qué propiedad NSArrayController está intentando conectar? – Huperniketes

Respuesta

4

NSPersistentDocument tiene su propio contexto de objeto gestionado, y debe vincular NSArrayController en el archivo xib de su documento a ese contexto de objeto gestionado.

Por ejemplo, si su clase de documento se llama MyDocument, entonces Xcode generará automáticamente un MyDocument.h/.m/.xib para usted. En .xib, el propietario del archivo es una instancia de su clase MyDocument, y puede enlazar el NSArrayController a esto, con el enlace Propietario del archivo -> managedObjectContext.

+0

Si entiendo correctamente sj660, ha hecho exactamente lo que sugiere ... y todavía está recibiendo el signo de exclamación y los errores. También recibo el signo de exclamación, pero obtengo un conjunto diferente de errores. Creé un proyecto nuevo en Xcode 4 y no hice nada excepto crear una única entidad y un controlador de matriz. Intenté vincular el controlador de array al propietario del archivo -> managedObjectContext y ejecutar el programa y me aparece: 2011-07-06 19: 40: 35.616 FlashCard2 [92229: 903] - [FlashCardDocument persistentStoreCoordinator]: selector no reconocido enviado a la instancia 0x10013a610 – Jason

+0

Tengo Xcode 4.0.0 build 4A303a, 4.0.2 build 4A2002a está fuera y lo estoy descargando ahora. Tal vez solucionará el problema. – Jason

+0

Parece que tiene un problema diferente, pero es un poco difícil de decir sin el seguimiento de pila completo de ese bloqueo. – ImHuntingWabbits

0

Estoy funcionando con el mismo problema (el ejemplo Carlot en el capítulo 11 de Hillegass, ¿verdad?)

La siguiente entrada del blog es de un desarrollador que escribió y mantiene una extensión para su uso con NSManagedObjects y considera que es un bug en XCode 4 y ha presentado un informe en rdar: http://danieltull.co.uk/blog/2011/04/20/xcode-4-and-creating-nsmanagedobject-subclasses/

tengo una máquina con XCode 3 en ella, yo finalmente renunciar a golpes en esto en 4, crear el proyecto en Xcode 3 y la importación en XCode 4

Editado para agregar: Agregar el elemento en XCode 3 y vincular la salida, y luego, importar el proyecto a XCode 4 funciona bien, parece que esto es un error en XCode 4. No recibo problemas de validación de XCode 4 al hacer esto.

Cuestiones relacionadas