2012-07-08 45 views
1

我已经创建了结构并想从另一个类中访问它的数据。所以,我创建了属性,但出现了一个错误:“在File类型的对象上找不到属性dfi”。我做错了什么?如何从另一个类的结构访问数据?

//File.h 
typedef struct 
{ 
    double *data; 
    int a;  
} DataFileInfo; 

@interface File : NSObject { 

    DataFileInfo dfi; 
} 

@property DataFileInfo dfi; 

//File.m 
@implementation File 

@synthesize dfi; 

File2类我试图访问该属性

//File2.m 
@implementation File2 

File *file = [[File alloc]init]; 

double *b = file.dfi.data; // error "Property dfi not found on object of type File". 
+0

我猜编译器是困惑,因为你声明的类型DataFileInfo'的'属性'VS * DataFileInfo',它不知道如何处理。另外,对于属性的非Objective-C类型,您应该明确指定“assign”或属性应具有的任何访问技术。 – 2012-07-08 13:56:03

+0

为什么不使用对象而不是结构? – 2012-07-08 14:13:33

+0

我会推荐重新命名你的班级。文件很可能与标准或第三方框架发生冲突。使用'AppnameFile'或类似的。 – wadesworld 2012-07-08 14:49:32

回答

0

更改@property DataFileInfo dfi;到:

@property (nonatomic, readonly) DataFileInfo* dfi;

然后取出@synthesize,并在其位置代码:

(DataFileInfo*) dfi { 
    return &dfi; 
}