2014-05-25 108 views
0

我一直在使用歸檔,我正在切換到核心數據 - 但是,我不知道如何實現我想要添加到數據庫中的某個實體。核心數據關係到相同的實體

這是我怎麼會不使用核心數據都寫在頭文件...

@interface SELCase : NSObject <NSCoding> 

@property (nonatomic) NSString *name; 
@property (nonatomic) NSString *caseKey; 
@property (nonatomic) BOOL individual; 
@property (nonatomic) float indivAmount; 
@property (nonatomic) SELCase *indivType; 

@end 

數據會被加載,每次將姓名,caseKey和個人。如果個人是YES,那就是結束了,但如果它不是個人,那麼個人和個人類型將被加載。

問題是我需要與另一個SELCase的關係,我不知道該怎麼做。任何幫助?

+1

ctrl +從'SELCase'實體拖動到自身(在coredata圖形編輯器中)以創建父/子關係。 – Alladinian

回答

1

只需創建一個指向同一實體的關係即可。

下面是一個例子:

@property (nonatomic, retain) NSString * goalName; 
@property (nonatomic, retain) NSData * goalPicture; 
@property (nonatomic, retain) NSNumber * indexOrder; 
@property (nonatomic, retain) NSNumber * wordPicture; 
@property (nonatomic, retain) NSSet *item; 
@property (nonatomic, retain) Goal *parent; 
@property (nonatomic, retain) NSSet *subGoals; 
@property (nonatomic, retain) User *user; 
@property (nonatomic, retain) NSSet *video; 
@property (nonatomic, retain) NSSet *stats; 
@end 

@interface Goal (CoreDataGeneratedAccessors) 

- (void)addItemObject:(Item *)value; 
- (void)removeItemObject:(Item *)value; 
- (void)addItem:(NSSet *)values; 
- (void)removeItem:(NSSet *)values; 

- (void)addSubGoalsObject:(Goal *)value; 
- (void)removeSubGoalsObject:(Goal *)value; 
- (void)addSubGoals:(NSSet *)values; 
- (void)removeSubGoals:(NSSet *)values; 

- (void)addVideoObject:(Video *)value; 
- (void)removeVideoObject:(Video *)value; 
- (void)addVideo:(NSSet *)values; 
- (void)removeVideo:(NSSet *)values; 

- (void)addStatsObject:(Stats *)value; 
- (void)removeStatsObject:(Stats *)value; 
- (void)addStats:(NSSet *)values; 
- (void)removeStats:(NSSet *)values; 

在這種情況下,子目標是一組由相同類型的實體的。

在你的模型中,你只需建立一個指向同一個實體的關係(一個/一個,一個/多個,任何)。

+0

反過來呢?將它設置爲相同的關係?關係:indivType - 目的地:SELCase - 逆:individualType? – Scott

+1

反過來指向SELCase。在我的示例中,目標*父指向作爲當前項目的「父」的目標對象。當您創建其中一個實體時,您將在其中放置一個指向其中的父SELCase對象的指針。這樣,您可以高效地在列表中向上或向下遍歷對象。 – RegularExpression