2011-12-20 16 views
59

Estoy adaptando This tutorial a mi aplicación, y lo tengo reducido a un último error, lo que me está deteniendo en seco. El programa no puede encontrar una propiedad en otro archivo, pero esa propiedad está claramente definida. Aquí está el código en cuestión:No se puede encontrar la propiedad en el objeto de clase avanzada

la línea de error real:

for (DTContact *dtc in _dtContact.contact) { 

el .h para el archivo y objetos en cuestión:

#import <UIKit/UIKit.h> 

@class XMLTestViewController; 
@class DTCXMLResponse; 

@interface XMLTestController : UIViewController{ 
    UIWindow *window; 
    XMLTestViewController *viewController; 
    DTCXMLResponse *_dtContact; 
} 


@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet XMLTestViewController *viewController; 
@property (nonatomic, retain) DTCXMLResponse *dtContact; 

@property (nonatomic, retain) IBOutlet UIButton *mybutton; 
-(IBAction)buttonClicked; 

@end 

que está teniendo problemas con el _dtContact.contact . No puede encontrar el contacto en el archivo DTCXMLResponse. Aquí está el archivo .h y la sección de la .m:

.h

#import <Foundation/Foundation.h> 

@interface DTContactXMLResponse : NSObject { 
    NSMutableArray *_contact; 
} 

@property (nonatomic, retain) NSMutableArray *contact; 

@end 

.m

#import "DTCXMLResponse.h" 

@implementation DTContactXMLResponse 
@synthesize contact = _contact; 

- (id)init { 

    if ((self = [super init])) { 
     self.contact = [[NSMutableArray alloc] init]; 
    } 
    return self; 

} 

@end 

así que hay que. Como puede ver, tengo 'contacto' en el DTCXMLResponse.h, y vinculado en el .m.

+1

Una nota, la línea 'self.contact = [[NSMutableArray alloc] init];' debe ser en realidad 'self.contact = [NSMutableArray array];', ya que su propiedad ya conserva la matriz. –

+0

Lo arreglé, gracias. –

Respuesta

149

Este error generalmente indica que Xcode no puede reconocer su símbolo. Supongo que se trata de DTContact.

intenta insertar esto en su archivo .h:

#import DTContact.h 
+0

está buscando el archivo, simplemente no es la propiedad. Traté de importarlo ya, y eso es un no ir. –

+0

De hecho, lo usé y lo tuve al revés. ¡Gracias! –

+0

¡Gran respuesta, corta, simple y soluciona el problema directamente! Gracias – snowbound

0

No es relevante para ur caso, pero yo estaba recibiendo el mismo error. Busqué en Google una solución, pero el problema estaba en mi código. Estaba usando un objeto de clase diferente ya que estaba copiando un fragmento de código similar en mi proyecto. Así que aquí está el problema que tuve por el mismo error:

Por mi classA, tuve algunos fragmento de código como:

ManagedObjectOfClassA * managedObjectOfClassA = [NSEntityDescription insertNewObjectForEntityForName:@"ManagedObjectOfClassA"                inManagedObjectContext:managedObjectContext]; 

    managedObjectOfClassA.somePropertyA = sameValue; //somePropertyA is an attribute of ManagedObjectOfClassA 

Y un código similar para la clase B:

ManagedObjectOfClassA *managedObjectOfClassB = [NSEntityDescription insertNewObjectForEntityForName:@"ManagedObjectOfClassB" inManagedObjectContext:managedObjectContext]; 

    managedObjectOfClassB.somePropertyB = someValue;////somePropertyB is an attribute of ManagedObjectOfClassB 

Si Si mira de cerca, el error fue asignar las entidades correctas a los objetos correspondientes en la clase B.

Entonces el problema está en el código de clase B. Y el código correcto sería:

ManagedObjectOf ClassB * managedObjectOfClassB = [NSEntityDescription insertNewObjectForEntityForName: @ "ManagedObjectOf ClassB" inManagedObjectContext: managedObjectContext];

managedObjectOf ClassB. somePropertyB .someValue;

Espero que ayude a alguien.

Cuestiones relacionadas