2011-12-20 31 views
59

Tôi đang điều chỉnh This tutorial cho ứng dụng của mình và tôi đã xóa nó xuống một lỗi cuối cùng, điều này đang ngăn tôi theo dõi. Chương trình không thể tìm thấy thuộc tính trong tệp khác, nhưng thuộc tính đó được xác định rõ ràng. Đây là mã trong câu hỏi:Không thể tìm thấy thuộc tính trong đối tượng lớp học chuyển tiếp

Dòng lỗi thực tế:

for (DTContact *dtc in _dtContact.contact) { 

các .h cho các tập tin, và các mặt hàng trong câu hỏi:

#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 

Nó gặp vấn đề với _dtContact.contact . Nó không thể tìm thấy liên hệ trong tệp DTCXMLResponse. Dưới đây là file .h và phần của .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 

Vì vậy, theres đó. Như bạn có thể thấy, tôi có 'liên hệ' được gắn thích hợp trong DTCXMLResponse.h và được liên kết trong .m.

+1

Một lưu ý, dòng 'self.contact = [[NSMutableArray alloc] init];' nên thực sự 'self.contact = [mảng NSMutableArray];', vì thuộc tính của bạn đã giữ lại mảng. –

+0

Tôi đã khắc phục điều đó, cảm ơn bạn. –

Trả lời

149

Lỗi này thường chỉ ra rằng Xcode không thể nhận ra biểu tượng của bạn. Tôi có thể giả định đây là DTContact.

Cố gắng chèn này trong file .h của bạn:

#import DTContact.h 
+0

tìm tập tin, không phải tài sản. Tôi đã cố gắng nhập nó, và đó không phải là đi. –

+0

Tôi thực sự sử dụng điều này, và đã có nó ngược. Cảm ơn! –

+0

Câu trả lời hay, ngắn gọn, đơn giản và giải quyết trực tiếp vấn đề! Cảm ơn bạn – snowbound

0

của nó không liên quan đến trường hợp ur nhưng tôi đã nhận được báo lỗi tương tự. Tôi googled cho một giải pháp nhưng vấn đề là trong mã của tôi. Tôi đã sử dụng đối tượng lớp khác nhau như tôi đã được sao chép dán đoạn mã tương tự trong dự án của tôi. Vì vậy, đây là vấn đề mà tôi đã cho những lỗi tương tự:

Đối classA của tôi, tôi đã có một số đoạn mã như:

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

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

Và mã tương tự cho lớp B:

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

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

Nếu u nhìn kỹ, sai lầm là trong việc gán đúng thực thể cho các đối tượng tương ứng trong lớp B.

Vì vậy, vấn đề nằm trong mã của lớp B. Và mã đúng là:

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

managedObjectOf ClassB. somePropertyB .someValue;

Tôi hy vọng rằng sẽ giúp ai đó.

Các vấn đề liên quan