2011-06-22 67 views
0

你好我想通過添加一個附加關係類型來設置兩個messages之間的關係。在覈心數據中定義關係類型

實施例:

message2 isDuplicate message3 
message3 isSuccessor message4 
message4 isPredecessor message3 
etc. 

的類型的數量是不固定的,所以加入每種類型的關係是不是一個真正的選項。我SQL會做這樣的事情:

Message{_id_, text} 
msgRelation{_msgID1_, _msgID2_, type} 
//_msgID1_, _msgID2_ foreign keys to Message.id 

我希望有人可以提供幫助。

回答

0

這聽起來像你需要添加一個實體來建模關係本身。

RelateType{ 
    type:string // ...isDuplicate, isSuccessor, isPredecessor etc 
    fromMessage<<-->Message.toMessages 
    toMessage<<-->Message.fromMessages 
} 

Message{ 
    title:string 
    toMessages<-->>RelateType.fromMessages 
    fromMessages<-->>RelateType.toMessages 
} 

RelateType的將形成的任何兩個Messages之間的橋樑。 RelateType.type關係可以讓你模擬任意類型的關係。要查找類型的任何特殊Message對象的關係,你只是:

NSString *[email protected]"isDuplicate"; 
NSPredicate *p=[NSPredicate predicateWithFormat:@"type == %@", relateType]; 
NSSet *duplicateMsgs=[msgObj filteredSetUsingPredicate:p]; 

或者,你可以做的RelateType實體獲取查找所有特定類型的關係,例如中的所有isDuplicate關係。

但是,通常如果你發現自己在做這樣的事情,那是因爲你試圖將SQL架構拖入核心數據模型,這總是一個錯誤。