我不太确定这是否是正确的方法
我希望实体A和B之间有一对多的关系,所以A可以引用B的多个记录,但B只能引用A的一个记录
我的问题是如何使用MagicalRecords执行此操作...我熟悉基本读取和创建单个实体
但不知道如何获取,创建,更新具有真实性的实体
答案 0 :(得分:0)
“MagicalRecords如何做到这一点”是什么意思?因为MagicalRecords无法处理。 它们都在coredata模型文件中设置。 例如,对于我的项目,我正在实现IM功能。 1.一次谈话 - >很多消息 2.一条消息 - >一个对话
这是数据模型的设计。 随时问我关于Coredata + MR的任何问题 干杯!
答案 1 :(得分:0)
首先,您需要注意'背景' CoreData。我通常使用[MagicalRecord saveWithBlock:^(NSManagedObjectContext * localContext){}];方法,并在块内创建实体。
我将使用我的案例,我将上面作为一个例子,
保存"消息"谈话"谈话"实体,
ChatConversation* chatConversation = [ChatConversation MR_findFirstByAttribute:@"conversationID" withValue:<your value> inContext:localContext];
^首先看看是否已经使用find first by attribute方法
创建了一个实体ChatMessage* chatMessage = [ChatMessage MR_createInContext:localContext];
[chatMessage set.....];
......
if(!chatConversation){
//You need to create a new chatConversation entity
chatConversation = [ChatConversation MR_createInContext:localContext];
......
}
[chatMessage setChatConversation:chatConversation];
如果您想从聊天对话中获取所有消息,只需使用自定义谓词fetchAll消息
-(NSFetchedResultsController *)fetchedResultsController {
if(!_fetchedResultsController)
_fetchedResultsController = [ChatMessage MR_fetchAllSortedBy:@"createdAt" ascending:TRUE withPredicate:[NSPredicate predicateWithFormat:@"%K == %@", @"conversation.conversationID",self.conversationObject.conversationID] groupBy:nil delegate:self];
return _fetchedResultsController;
}