핵심 데이터 모델에서 두 엔티티 만 사용하여 찾고있는 솔루션을 얻을 수 없습니다. 한 가지 해결책은 항목을 읽거나 볼 때 추적하기 위해 Blog
과 Forum
사이의 다른 관계를 매핑하는 추가 엔터티를 추가하는 것입니다.
는 예를 들어, 다음 사항을 고려하십시오

를이 모델에서 Viewed
기업이 추가되었습니다. Viewed
엔티티는 Blog
과 Forum
과의 to-one 관계를가집니다. Blog
/Forum
엔티티는 Viewed
오브젝트와 반대의 관계를 갖고 있습니다.
Blog
을보고 /보고/읽은 특정 Forum
에 대해 Viewed
엔티티를 만들어야합니다. Viewed
엔티티의 Blog
/Forum
페어링은 고유해야합니다. 이렇게하면 각 포럼에 대한 블로그의 읽음/읽지 않음 상태를 추적 할 수 있습니다.
여기에 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
}
}
비슷한 질문에 [답변] (https://stackoverflow.com/a/47227350/3985749)을 참조하십시오. – pbasdf