代码之家  ›  专栏  ›  技术社区  ›  user6631314

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

  •  1
  • user6631314  · 技术社区  · 7 年前

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

    然后在我使用关系的评论旁边写下项目名称(一本书)。对于书名,我可以使用 comment.book.title 获取标题。

    然而,一本书的标题是 议论书标题 但对于一首歌,标题将是 comment.song.title 。对于一些评论,我创建了与某本书的关系,而在另一些评论中,我创建了与某首歌的关系。的确,核心数据中的实体和属性之间存在正式的关系。但我对那些潜在的关系以及我为建立这种联系而创建的具体关系感到困惑。

    我迫切需要的是检测是否建立了关系。

    注释有一个关系 book 书籍和其他 song 到歌曲。

    我应该用像if

    if (comment.book.title.length>=1) {
    myLabel.text = comment.book.title;
    }
    else if (comment.song.title.length>=1) {
    myLabel.text= comment.song.title;
    }
    

    或者最好的方法是什么?

    编辑/澄清:

    上述代码似乎有效。然而,不确定它是否健壮。

    提前感谢您的建议。

    1 回复  |  直到 7 年前
        1
  •  2
  •   pfandrade    7 年前

    你的方法应该很管用。如果您想要更通用的东西,那么核心数据实际上支持继承和抽象类。

    因此,您可以使Book and Song对象从内容抽象的超类继承。该类将保存所有子类之间的公共属性,例如标题,以及与注释实体的关系。

    这是我刚才说的一张图表。

    enter image description here

    然后,要检查并获取评论相关的标题,只需执行以下操作: comment.content.title