Objective c 如何插入与另一个相关的核心数据记录而不重复

Objective c 如何插入与另一个相关的核心数据记录而不重复,objective-c,core-data,one-to-many,relationship,duplication,Objective C,Core Data,One To Many,Relationship,Duplication,我有两个核心数据实体,文章和收藏夹文章与最喜欢的有很多关系。首先,我成功插入了所有文章对象 现在,我试图在“收藏夹”实体中插入ArticleID,但我做不到。该记录要么以空关系插入,要么与“Articles”实体中的新记录一起插入 我认为我应该首先在文章实体中获取相关记录,然后使用它插入收藏夹中,但我不确定如何做到这一点。我当前的代码: NSManagedObjectContext *context =[appDelegate managedObjectContext] ; favorite

我有两个核心数据实体,
文章
收藏夹
<代码>文章与
最喜欢的
有很多关系。首先,我成功插入了所有
文章
对象

现在,我试图在“收藏夹”实体中插入ArticleID,但我做不到。该记录要么以空关系插入,要么与“Articles”实体中的新记录一起插入

我认为我应该首先在
文章
实体中获取相关记录,然后使用它插入
收藏夹
中,但我不确定如何做到这一点。我当前的代码:

NSManagedObjectContext *context =[appDelegate managedObjectContext] ; 
favorite *Fav =[NSEntityDescription insertNewObjectForEntityForName:@"favorite" inManagedObjectContext:context];
Articles * Article = [NSEntityDescription insertNewObjectForEntityForName:@"Articles" inManagedObjectContext:context];

NSError *error;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription 
                               entityForName:@"Articles" inManagedObjectContext:context];  
[fetchRequest setEntity:entity]; 
NSPredicate *secondpredicate = [NSPredicate predicateWithFormat:@"qid = %@",appDelegate.GlobalQID ];
NSPredicate *thirdpredicate = [NSPredicate predicateWithFormat:@"LangID=%@",appDelegate.LangID]; 
NSPredicate *comboPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects: secondpredicate,thirdpredicate, nil]]; 
[fetchRequest setPredicate:comboPredicate];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) { 
        // ?????????????????????????

    }

}

如果您有任何建议,我们将不胜感激。

首先,请确保您在
文章
收藏
之间有双向关系。大概是这样的:

Article{
  favorites<-->>Favorite.article
}

Favorite{
  article<<-->Article.favorites
}
如果
Article
对象或
Favorite
对象已经存在,您将首先获取该对象,但设置关系的方式将完全相同


关键是确保您具有互惠关系,以便托管对象上下文知道在两个对象中设置关系

我通过创建新的Article对象解决了这个问题:

Articles *NewObj = [fetchedObjects objectAtIndex:0];
并使用它插入关系:

    [Fav setFavArticles:NewObj];
     [NewObj setArticlesFav:Fav];

非常感谢TechZen..

谢谢TechZen。。我已经颠倒了文章和收藏夹之间的关系。。文章的对象是以前插入的,现在我想插入相关的收藏夹对象。我已经将这一行添加到循环中:[[Fatwa mutableSetValueForKey:@“FavArticle”]addObject:Fav];并获取此错误:由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[valueForUndefinedKey:]:实体项目不符合键“favArticle”的键值编码要求。“如何使用获取的文章对象插入收藏夹对象?”。此错误意味着您没有名为/拼写的属性“FavArticle”是为
文章
实体/类定义的。这通常是打字错误造成的,会导致您拼错键名,例如,真实名称类似于“FavArticle”或“favArticles”“。为什么从文章到收藏夹的关系是1->N?因为这是母帖作者所说的。关系不必是1->N,倒数也不必是1->1,但这是最常见的模式。
    [Fav setFavArticles:NewObj];
     [NewObj setArticlesFav:Fav];