Свойство не может быть найдено в объекте форвард класса - PullRequest
72 голосов
/ 20 декабря 2011

Я адаптирую Этот учебник к своему приложению, и у меня все сводится к одной последней ошибке, которая останавливает меня в моих треках. Программа не может найти свойство в другом файле, но это свойство четко определено. Вот этот код:

Фактическая строка ошибки:

for (DTContact *dtc in _dtContact.contact) {

.h для файла и рассматриваемых элементов:

#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

У него проблемы с _dtContact.contact. Не удается найти контакт в файле DTCXMLResponse. Вот файл .h и раздел .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

Так вот что. Как вы можете видеть, у меня есть свойство 'contact' в DTCXMLResponse.h и ссылки в .m.

Ответы [ 2 ]

168 голосов
/ 20 декабря 2011

Эта ошибка обычно указывает на то, что Xcode не может распознать ваш символ.Я могу предположить, что это DTContact.

Попробуйте вставить это в ваш файл .h:

#import DTContact.h
0 голосов
/ 03 июля 2017

Это не относится к вашему случаю, но я получаю ту же ошибку.Я гуглил решение, но проблема была в моем коде.Я использовал другой объект класса, поскольку копировал и вставлял похожий фрагмент кода в свой проект.Итак, вот проблема, с которой я столкнулся при той же ошибке:

Для моего класса A у меня был фрагмент кода вроде:

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

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

И аналогичный код для класса B:

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

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

Если вы посмотрите внимательно, ошибка заключалась в назначении правильных сущностей для соответствующих объектов в классе B.

Итак, проблема в коде класса B. И правильный код будет:

ManagedObjectOf ClassB * managedObjectOfClassB = [NSEntityDescription insertNewObjectForEntityForName: @ "ManagedObjectOf КлассB " inManagedObjectContext: managedObjectB0 * * 9 * 89 * 89: 8107O9: 0 * * * * * * * * * * * * * * * * * * * * * * * * 9 * 109: 89: 109: 89: 109: 89: 89: 89: 89: 109: 89: 89: 8B9: 109];. somePropertyB .someValue;

Надеюсь, это кому-нибудь поможет.

...