2011-10-07 128 views
-1
@interface Category : NSObject 

@property(nonatomic) NSInteger ID; 
@property(nonatomic, retain) NSString *Name; 
@property(nonatomic, retain) NSString *Description; 

@end 

产品类对象属性

@interface Product : NSObject 

@property(nonatomic) NSInteger ID; 
@property(nonatomic, retain) NSString *Name; 
@property(nonatomic, retain) NSString *Description; 

@属性(非原子,保留)类别*类别;

@end 

如何创建类型类别的属性。它有可能吗?

+1

如果你只是试着运行代码,我想你会发现它。也许你需要在顶部添加'#import“Category.h”'。 – darvids0n

回答

1

1)如果类Product单独的文件中,则定义为:

#import "Category.h" // file, where class Category is defined 

@interface Product : NSObject 

@property(nonatomic) NSInteger ID; 
@property(nonatomic, retain) NSString *Name; 
@property(nonatomic, retain) NSString *Description; 
@property(nonatomic, retain) Category *category; 

@end 

2)如果你的类ProductCategory在同一文件中定义,那么你不需要任何额外的import但可以肯定的该类别Categiry的定义早于Product

3)当两个类有型对方的对象那么你应该使用@class标签的情况:

@class Product; 

@interface Category : NSObject 
@property(nonatomic, retain) Product *product; 
@end 

@interface Product : NSObject 
@property(nonatomic, retain) Category *category; 
@end 
+0

太棒了!有用。 – gangt

3

你做到这一点,就像你,除了你需要添加的向前声明在Product.h您的范畴类(您@interface行之前):

@Class Category; 

,然后导入头在Product.m

#import "Category.h" 
1

是的,这是可能的,并且您发布的语法是正确的。如果你有一个问题,也许它可能是因为你需要做的

#import "Category.h" 

在Product.h的顶部,你需要确保@synthesize类别。但是既然你一直在使用其他属性,我想你已经知道了。