ios - iOS/Objective-C:检测nsmanaged对象是否链接到核心数据中的另一个nsmanagedobject

标签 ios objective-c core-data

我允许在我的应用中对不同类型的项目(例如书籍和歌曲)发表评论。为了将评论链接到项目,我在核心数据中创建了一个关系。

然后,在注释旁边放置项目的名称(即一本书),然后使用关系。对于书名,我可以使用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实体的关系。

这是我刚才说的图。

enter image description here

然后,要检查是否获得与注释相关的标题,只需执行:comment.content.title

关于ios - iOS/Objective-C:检测nsmanaged对象是否链接到核心数据中的另一个nsmanagedobject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49316466/

相关文章:

ios - 如何根据swift中的内容增加TableViewCell的高度

ios - 创建 switch 语句给我错误

ios - CloudKit+Core Data 在生产中突然停止同步

ios - 如何清除 Restkit 中 UITableView 的 NSFetchedResultsController 结果

ios - Collection View 布局问题

ios - 是否可以访问另一个 iOS 应用程序的文件提供程序

iphone - 为什么这个条件语句不能与 NSUserDefault 一起使用?

objective-c - 使用 Physics SKSpriteNode 子项暂停 SpriteKit 游戏

ios - 如何获取旧 Sprite 节点的位置以用于新 Sprite 节点?

ios - 从数据库加载实体而不是直接从数据库提取数据