2011-10-07 196 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類別。但是既然你一直在使用其他屬性,我想你已經知道了。