您好我想通过添加其他关系类型来设置两个messages
之间的关系。
示例:
message2 isDuplicate message3
message3 isSuccessor message4
message4 isPredecessor message3
etc.
类型的数量不固定,因此为每种类型添加关系不是一个真正的选择。我会做类似的事情:
Message{_id_, text}
msgRelation{_msgID1_, _msgID2_, type}
//_msgID1_, _msgID2_ foreign keys to Message.id
我希望有人可以提供帮助。
答案 0 :(得分: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 *relateType=@"isDuplicate";
NSPredicate *p=[NSPredicate predicateWithFormat:@"type == %@", relateType];
NSSet *duplicateMsgs=[msgObj filteredSetUsingPredicate:p];
或者,您可以在RelateType
实体上进行抓取,以查找所有特定类型的关系,例如所有isDuplicate
关系。
但是,通常如果你发现自己正在做这样的事情,那是因为你试图将SQL模式转换为Core Data模型,这总是一个错误。