web-dev-qa-db-fra.com

La propriété est introuvable dans l'objet de la classe suivante

J'adapte Ce tutoriel à mon application, et je l'ai réduit à une dernière erreur, qui m'arrête dans mes morceaux. Le programme est incapable de trouver une propriété dans un autre fichier, mais cette propriété est clairement définie. Voici le code en question:

La ligne d'erreur réelle:

for (DTContact *dtc in _dtContact.contact) {

le fichier .h pour le fichier et les éléments en question:

#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

Il a des problèmes avec _dtContact.contact. Il ne trouve pas le contact dans le fichier DTCXMLResponse. Voici le fichier .h et la section du .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

Alors theres ça. Comme vous pouvez le constater, j'ai un 'contact' situé dans le fichier DTCXMLResponse.h et lié au fichier .m. 

69
Spencer Cole

Cette erreur indique généralement que Xcode ne peut pas reconnaître votre symbole . Je peux supposer que c'est DTContact.

Essayez d'insérer ceci dans votre fichier .h:

#import DTContact.h
163
shannoga

Ce n'est pas pertinent pour votre cas, mais j'ai eu la même erreur. J'ai cherché une solution sur Google mais le problème était dans mon code. J'utilisais un objet de classe différent en copiant un extrait de code similaire dans mon projet. Voici donc le problème que j'ai eu pour la même erreur:

Pour ma classe A, j'avais un extrait de code comme:

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

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

Et un code similaire pour la classe B: 

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

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

Si vous regardez de près, l’erreur est d’affecter les bonnes entités aux objets correspondants de la classe B.

Le problème est donc dans le code de classe B. Et le code correct serait: 

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

managedObjectOf ClassB . somePropertyB . someValue;

J'espère que cela aide quelqu'un.

0
Priyanka