coreData多对多关系向关系表

时间:2017-12-21 14:20:08

标签: ios core-data many-to-many

我的blogData和论坛的coreData模型中有很多关系。每个论坛都可以有多个博客,每个博客都可以属于多个论坛。

我想为博客设置一个独特的bool属性,但这个属性会在每个论坛中有所不同。

是否可以为博客/论坛组合设置多对多的属性?即blogSeen bool变量,对于每个博客/论坛关系都是唯一的。

1 个答案:

答案 0 :(得分:0)

仅使用Core Data模型中的两个实体无法实现您正在寻找的解决方案。一种解决方案是添加一个额外的实体,用于映射BlogForum之间的另一个关系,以便在读取/查看项目时进行跟踪。

例如,请考虑以下事项:

Microsoft documentation

在此模型中,添加了Viewed实体。 Viewed实体与BlogForum具有一对一的关系。 Blog / Forum个实体与Viewed对象的关系是反向的。

每次为特定Blog Forum Viewed实体查看/查看/阅读时,都应创建BlogForum实体中的Viewed / Forum配对应该是唯一的。这将允许您跟踪每个论坛的博客的已读/未读状态。

为此目的,这是extension Forum { public var readBlogs: [Blog] { guard let viewed = self.inverseViewed as? Set<Viewed> else { return [] } var blogs = [Blog]() viewed.forEach { (viewed) in if let blog = viewed.blog { blogs.append(blog) } } return blogs } public var unreadBlogs: [Blog] { guard let allBlogs = self.blogs as? Set<Blog> else { return [] } var unreadBlogs = Array(allBlogs) self.readBlogs.forEach { (blog) in if let index = unreadBlogs.index(of: blog) { unreadBlogs.remove(at: index) } } return unreadBlogs } } 的简单扩展。

m*x"(t) + d*x'(t) + k*x(t) = y(t)