在前向类对象中找不到属性


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

.m

#import "DTCXMLResponse.h"

@implementation DTContactXMLResponse
@synthesize contact = _contact;

- (id)init {

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

}

@end

所以那。如您所见,我在DTCXMLResponse.h中设置了“联系”,并在.m中进行了链接。


1
请注意,该行self.contact = [[NSMutableArray alloc] init];实际上应该是self.contact = [NSMutableArray array];,因为您的属性已经保留了该数组。
理查德·罗斯三世

我已经解决了,谢谢。
Spencer Cole

Answers:


180

该错误通常指出Xcode无法识别您的符号。我可以假设这是DTContact。

尝试将其插入您的.h文件:

#import DTContact.h

它正在查找文件,而不是属性。我已经尝试导入它,这是不行的。
Spencer Cole

我实际上使用了此功能,并将其向后移动。谢谢!
Spencer Cole

好的答案,简短,简单,可以直接解决问题!谢谢
2015年

检查@class DTContact
Kernelzero'1

简单而又非常有用的好答案谢谢:)。+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 ClassBsomePropertyB .someValue;

希望对您有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.