核心数据:创建关系

时间:2013-10-11 11:57:26

标签: iphone ios objective-c xcode core-data

我想知道是否有人能够帮助我解决与核心数据相关的问题。我正在构建一个iPhone应用程序,现在需要创建从一个实体到另一个实体的关系。

我是核心数据的新手,目标c并且坦率地说是整个应用程序开发过程所以如果你有答案请记住我可能会发现很难理解:-(我花了很长时间扫描网络和阅读Apple的文档,只是无法解决这个问题。


我正在尝试将新数据插入到实体中,并与不同实体中的现有对象建立关系。我已经设置了我的数据模型,创建了我的NSManagedObjectSubClasses并可以将数据插入和管理到一个实体中,我只是无法弄清楚如何使用关系。

例如,假设我有一个名为Article的实体和另一个名为Author的实体。我已经有了一份作者名单。当我创建一篇新文章时,如何将这篇新文章链接到已经存在关系的作者?

创建此关系需要哪些代码行?

创建该链接需要哪些信息?

我感觉我的问题在于我正在尝试与之建立关系的数据类型。 NSIndexPath,NSManagedObject和NSMutableSet似乎不对。

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将关系创建为设计实体的一部分,而不是代码行。假设您希望能够拥有包含多个作者的文章,则需要查看多对多类型的关系。 (作者会有一个叫做文章的多对多关系,文章会有一个叫做作者的多对多关系,这是相反的。)

然后,您可以创建作者和文章子类,链接其对象的代码将类似于:[myAuthor addArticlesObject:myArticle];

例如:

Author *myAuthor = [NSEntityDescription insertNewObjectForEntityForName:@"Author"
                                                 inManagedObjectContext:self.managedObjectContext];
myAuthor.name = @"Phillip Mills";
Article *myArticle = [NSEntityDescription insertNewObjectForEntityForName:@"Article"
                                                   inManagedObjectContext:self.managedObjectContext];
myArticle.title = @"Sample of linking core data entities";

NSError *error;
[myAuthor addArticlesObject:myArticle];
if (![self.managedObjectContext save:&error])
{
    NSLog(@"Database update failed: %@", error);
}