我允许在我的应用中对不同类型的项目(例如书籍和歌曲)发表评论。为了将评论链接到项目,我在核心数据中创建了一个关系。
然后,在注释旁边放置项目的名称(即一本书),然后使用关系。对于书名,我可以使用comment.book.title
来获得书名。
但是,对于一本书,书名将为comment.book.title
,而对于歌曲,书名将为comment.song.title
。对于某些评论,我创建了与某本书的关系,并在其他方面与某首歌曲建立了关系。确实,核心数据中的实体和属性之间存在正式关系。但是我对于那些潜在的关系以及为建立关联而创建的特定关系感到困惑。
我当前的需要是检测是否已建立关系。
注释与书的关系为book
,与歌曲的关系为另一song
。
我应该使用诸如
if (comment.book.title.length>=1) {
myLabel.text = comment.book.title;
}
else if (comment.song.title.length>=1) {
myLabel.text= comment.song.title;
}
或最佳方法是什么?
编辑/说明:
上面的代码似乎有效。但是,不确定它是否可靠。
在此先感谢您的任何建议。
最佳答案
您的方法应该可以正常工作。如果您想要更通用的东西,Core Data实际上支持继承和抽象类。
因此,您可以使Book和Song对象从Content抽象 super class 继承。该类将拥有所有子类之间的 public 属性,例如标题以及与Comment实体的关系。
这是我刚才说的图。
然后,要检查是否获得与注释相关的标题,只需执行:comment.content.title
。
关于ios - iOS/Objective-C:检测nsmanaged对象是否链接到核心数据中的另一个nsmanagedobject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49316466/