81

我正在将本教程改编为我的应用程序,我已经把它归结为最后一个错误,这让我停了下来。程序无法在另一个文件中找到属性,但该属性已明确定义。这是有问题的代码:

实际错误行:

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 中链接。

4

2 回答 2

189

此错误通常表明 Xcode 无法识别您的符号。我可以假设这是 DTContact。

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

#import DTContact.h
于 2011-12-20T15:13:52.160 回答
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;

我希望这对某人有所帮助。

于 2017-07-03T11:13:22.743 回答