2011-12-20 22 views
59

Sto adattando This tutorial alla mia app e l'ho ridotto a un ultimo errore, che mi impedisce di rimanere nelle mie tracce. Il programma non è in grado di trovare una proprietà in un altro file, ma quella proprietà è chiaramente definita. Ecco il codice in questione:Impossibile trovare la proprietà nell'oggetto forwarding

La linea errore effettivo:

for (DTContact *dtc in _dtContact.contact) { 

il .h per il file, e gli elementi in questione:

#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 

sta avendo problemi con la _dtContact.contact . Non riesce a trovare il contatto nel file DTCXMLResponse. Ecco il file .h e la sezione del .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 

ce n'è almeno questo. Come puoi vedere, ho "contact" propertied in DTCXMLResponse.h e collegato nel .m.

+1

Una nota, la riga 'self.contact = [[NSMutableArray alloc] init];' dovrebbe essere effettivamente 'self.contact = [NSMutableArray array];', poiché la proprietà conserva già la matrice. –

+0

Ho risolto il problema, grazie. –

risposta

149

Questo errore indica in genere che Xcode non è in grado di riconoscere il simbolo. Posso presumere che questo sia DTContact.

tenta di inserire questo nel vostro file .h:

#import DTContact.h 
+0

sta trovando il file, non solo la proprietà. Ho provato ad importarlo già, e questo è un no. –

+0

L'ho effettivamente usato e l'ho fatto all'indietro. Grazie! –

+0

Ottima risposta, breve, semplice e affronta direttamente il problema! Grazie – snowbound

0

La sua non è rilevante per ur caso, ma mi è stato sempre lo stesso errore. Ho cercato su Google una soluzione ma il problema era nel mio codice. Stavo usando un oggetto di classe diverso mentre stavo copiando un frammento di codice simile nel mio progetto. Così qui è il problema che ho avuto per lo stesso errore:

Per il mio classA, ho avuto qualche frammento di codice come:

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

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

E codice simile per la classe B:

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

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

Se Guardi da vicino, l'errore è stato nell'assegnare le entità giuste agli oggetti corrispondenti nella classe B.

Quindi il problema è nel codice di classe B. E il codice corretto sarebbe:

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

managedObjectOf ClasseB. somePropertyB .someValue;

Spero che questo aiuti qualcuno.

Problemi correlati