정방향 클래스 개체에서 속성을 찾을 수 없습니다.


78

나는 적응하고있어 이 튜토리얼을 내 애플 리케이션에, 나는 내 트랙에서 저를 중지하고 마지막 오류로 내려 삶은있어. 프로그램이 다른 파일에서 속성을 찾을 수 없지만 해당 속성이 명확하게 정의되어 있습니다. 문제의 코드는 다음과 같습니다.

실제 오류 라인 :

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

.미디엄

#import "DTCXMLResponse.h"

@implementation DTContactXMLResponse
@synthesize contact = _contact;

- (id)init {

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

}

@end

그래서 거기에 있습니다. 보시다시피, DTCXMLResponse.h에 'contact'가 등록되어 있고 .m.


1
참고로, 속성이 이미 배열을 유지하고 self.contact = [[NSMutableArray alloc] init];있으므로 줄 은 실제로이어야합니다 self.contact = [NSMutableArray array];.
Richard J. Ross III

고쳤습니다. 감사합니다.
Spencer Cole 2011

답변:


181

이 오류는 일반적으로 Xcode가 기호를 인식 할 수 없음을 나타냅니다. 이것이 DTContact라고 가정 할 수 있습니다.

.h 파일에 다음을 삽입하십시오.

#import DTContact.h

속성이 아니라 파일을 찾는 것입니다. 이미 가져 오려고했는데 안됩니다.
Spencer Cole 2011

나는 이것을 실제로 사용했고 거꾸로 가지고 있었다. 감사!
Spencer Cole

짧고 간단한 훌륭한 대답이며 문제를 직접 해결합니다! 감사합니다
눈에 갇힌

@class DTContact 확인
Kernelzero

Great Answer 간단하고 정말 도움이됩니다. 감사합니다 :). +1
Yogesh Patel

0

귀하의 경우와 관련이 없지만 동일한 오류가 발생했습니다. 해결책을 찾았지만 문제는 내 코드에 있습니다. 내 프로젝트에 유사한 코드 조각을 복사하여 붙여 넣을 때 다른 클래스 개체를 사용했습니다. 그래서 여기에 같은 오류에 대한 문제가 있습니다.

내 classA의 경우 다음과 같은 코드 스 니펫이 있습니다.

    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 ClassB "inManagedObjectContext : managedObjectContext];

managedObjectOf ClassB . somePropertyB .someValue;

누군가에게 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.