2011-12-02 12 views
10

He creado una UserModel.xcdatamodeld con una entrada: UserBase, y añade un atributo que se llama ID de usuario y el tipo es un número entero 32.XCode 4.2 NSManagedObject contexto compilación falló

Después de eso, puedo crear clases para ello con el archivo -> nueva subclase file-> NSManagedOBject, que crea UserBase.h y .m automáticamente.

En mi controlador importó el archivo UserBase.h, y crear una propiedad:

NSManagedObjectContext *userBaseObjectContext; 

con

@property (nonatomic, retain) NSManagedObjectContext *userBaseObjectContext; 

En archivo mycontroller.m sintetizado la propiedad userBaseObjectContext y en función de DidLoad yo probamos este :

UserBase *userObject=(UserBase *)[NSEntityDescription insertNewObjectForEntityForName:@"UserBase" inManagedObjectContext:userBaseObjectContext]; 
     [userObject setUserID:[NSNumber numberWithInt:42]]; 
     NSError *error; 
     if(![userBaseObjectContext save:&error]) 
     { 
      UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Application error" message:@"error" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil,nil]; 
      [alert show]; 
      [alert release]; 
     } 
     else 
      NSLog(@"not working..."); 

Cuando intento construir mi proyecto, tengo esta e rror:

Undefined symbols for architecture i386: 
"_OBJC_CLASS_$_NSEntityDescription", referenced from: 
    objc-class-ref in LoginController.o 
"_OBJC_METACLASS_$_NSManagedObject", referenced from: 
    _OBJC_METACLASS_$_UserBase in UserBase.o 
"_OBJC_CLASS_$_NSManagedObject", referenced from: 
    _OBJC_CLASS_$_UserBase in UserBase.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

¿Qué significa eso?

he seguido este tutorial: http://mobile.tutsplus.com/tutorials/iphone/iphone-core-data/

+3

Intente agregar el CoreData.framework. – rjstelling

+0

Funciona. Gracias ... – mudlee

Respuesta

20

símbolos no definidos por lo general significa que algunos marco no se encuentra. Los marcos son bibliotecas de clases compiladas previamente que puede usar en su aplicación.

Para añadir un marco de XCode 4:

  1. Haga clic en la raíz de su proyecto (el tema en la esquina superior izquierda con el icono Blueprint).
  2. Haga clic en su objetivo (por lo general, el mismo nombre de la aplicación con el "icono de un lápiz" a la izquierda).
  3. Haga clic en la pestaña "Resumen" en la parte superior, luego desplácese hacia abajo ... contraiga los separadores y en "Información de implementación del iPad" encontrará la sección "Marcos enlazados y bibliotecas" (consulte la figura 1 a continuación).
  4. Haga clic en el botón "+" en la parte inferior de la lista.
  5. Una ventana emergente le pedirá que elija un Framework, búsquelo y, cuando lo haya seleccionado, haga clic en Agregar.

Y eso es todo! Las clases contenidas en ese Marco estarán disponibles en su código siempre que realice el #import correcto.

Figura 1:

enter image description here

Para mantener su proyecto ordenó, voy a sugerir a arrastrar el marco recién agregado al grupo "marcos".

+3

Además ... agregue '#import ' en su archivo "pch" – refaelos

3

Si importó el archivo de alerta en su proyecto, asegúrese de que la casilla de verificación marque la Membresía de destino. ¡Tuve el mismo problema y después de marcar la casilla, el error desapareció!

0

Intente eliminar su clase NSManagedObject del proyecto y vuelva a generarla. Me ayudó;)

Cuestiones relacionadas