2011-09-17 62 views
2

一類到另一個我想創建一個類的對象到另一個 我有2個班無法包括在IOS

  1. MyviewControler
  2. 結帳

我想導入結帳成MyviewController

#import "Checkout.h" 

@interface MyViewController : UIViewController <UIImagePickerControllerDelegate> 
{ 
    Checkout *checkout; 
} 

@property (nonatomic) Checkout *checkout; 

@end 

它給我錯誤「Unknown type name ch eckout「

+1

請在您的問題中包含Checkout.h的內容。 – jrturton

+1

另外,使用'@property(nonatomic,retain)'。 – Can

+0

它在哪一行給出錯誤。 –

回答

7

在MyViewController.h,@interface前添加:

@class Checkout; 

在MyViewController.m,添加:

#import "Checkout.h" 
+0

請參閱我對Mayur Joshi的評論。前向聲明和額外導入都不應該在這裏有所作爲。 – Caleb

+0

我忘了提及在Checkout.h上刪除#import。認爲這很明顯。 – Bourne

1

也導入MyViewController.m文件中的文件。

//in .m file 
    #import "Checkout.h" 

    @class Checkout; //this was missing 

此外,給這樣的財產。

@property(nonatomic, retain) Checkout* checkout 

和合成它在.m文件

+1

假設'Checkout'類在Checkout.h中聲明,所以如果正在導入該文件,則沒有理由進行前向聲明('@class Checkout')。如果它被導入到MyViewController.h中,那麼也應該沒有理由將它導入到.m文件中。同意保留,但是否合成對於手頭的錯誤無關緊要。 – Caleb

4

你可能有一個依賴循環。使用前向聲明,它告訴編譯器有一個與該名稱的類,而不需要看它的聲明:

@class Checkout; // << the forward declaration 

@interface MyViewController : UIViewController <UIImagePickerControllerDelegate> 
{ 
    Checkout *checkout; 
} 

@property (nonatomic) Checkout *checkout; 

@end 

// MyViewController.m 
... 
#import "Checkout.h" 

向前聲明首選在大多數情況下。這種情況的例外是當存在物理依賴性時(例如,超類'聲明應該在子類之前')。前向聲明是很好的,因爲它們大大減少了構建時間以及包含圖和依賴關係的複雜性。

好運

4

如果錯誤真的是如你所說:

Unknown type name checkout 

(注意小'c'),那麼問題在於你在代碼中的某處使用checkout作爲類型名稱而不是Checkout