2012-04-29 102 views
0

我正在嘗試使用Restkit進行映射,並創建了2個類,如下所示。在跨類聲明錯誤?

  • 未知類型名稱 「一卡通」 Campaign.h
  • 未知類型名稱 「運動」Card.h
  • 物業以':我得到了以下錯誤保留(或強)「屬性必須是對象類型
  • ...更多但類似錯誤

我的問題是有辦法通過重新使用類來實現下面的類聲明。

Campaign.h

#import "Card.h" 

@interface Campaign : NSObject 

@property (nonatomic, strong) NSNumber* campaignId; 
@property (nonatomic, strong) NSString* title; 
@property (nonatomic, strong) Card* card; 

@end 

Card.h

#import "Campaign.h" 

@interface Card : NSObject 

@property (nonatomic, strong) NSNumber* cardId; 
@property (nonatomic, strong) NSString* name; 
@property (nonatomic, strong) Campaign* campaign; 

@end 

回答

1

以防萬一有人在將來需要它。在這裏我的解決辦法:

Campaign.h

@class Card; 

@interface Campaign : NSManagedObject 

@property (nonatomic, strong) NSNumber* campaignId; 
@property (nonatomic, strong) NSString* title; 
@property (nonatomic, strong) Card* card; 

@end 

Campaign.m

#import "Card.h" 

@implementation Campaign 

... 

@end 

Card.h

@class Campaign; 

@interface Card : NSManagedObject 

@property (nonatomic, strong) NSNumber* cardId; 
@property (nonatomic, strong) NSString* name; 
@property (nonatomic, strong) Campaign* campaign; 

@end 

Card.m

#import "Campaign.h" 

@implementation Card 

... 

@end 
2

通常,在頭,您使用正向類的聲明,以避免進口衝突。因此,在Campaign.h之前,您的界面之前,您將有@class Card,並在Card.h,你有@class Campaign。這只是告訴編譯器,這些類存在&是在別的地方定義的;這通常是你在頭文件中需要知道的全部內容。

+0

我確實嘗試過使用forward類。但是,我收到另一個錯誤的「屬性名稱」不能在foward類對象中找到。「 – Teon 2012-04-29 15:09:36

+0

哎呀...我想我知道這個問題。我沒有包含所有必需的標題。這就是爲什麼我獲得財產無法找到錯誤。乾杯! – Teon 2012-04-29 15:16:38