0

我有一个音频课。该音频有一个 SOUND_A 子类和一个 SOUND_B 子类。这一切都正确完成并且工作正常。

我有另一个模型,我们称之为 PLAYLIST_JOIN,它可以包含(在现实世界中)SOUND_A 和 SOUND_B,所以我们给它一个 AUDIO 和 PLAYLIST 的关系。

这一切都在应用程序中工作。

我现在遇到的问题是使用 NSPredicate 查询 PLAYLIST_JOIN 表。我想要做的是通过在谓词中给它2个键来找到一个精确的 PLAYLIST_JOIN 项目

sound_a._sound_a_id = %@ && playlist.playlist_id = %@

sound_b.sound_b_id = %@ && playlist.playlist_id = %@

主要问题是因为表不存储sound_aandsound_b而是存储audio,我不能使用这种语法。我没有重新组织 sound_a 和 sound_b 以使用相同的 _id 属性名称的选项,那么我该怎么做呢?

我可以将方法传递给谓词吗?像这样的东西:

[audio getID] = %@ && playlist_id = %@

4

1 回答 1

1

它有点复杂,但您需要在谓词中添加第三个条件:

(entity.name = sound_a && _sound_a_id = %@ && playlist.playlist_id = %@) && (entity.name = sound_b && sound_b_id = %@ && playlist.playlist_id = %@)

这是假设您正在查询音频摘要并告诉它返回子类。因为条件是从左到右检查的,如果第一个条件失败,它将继续前进并且不会抛出错误,因为 _sound_a_id 不存在。

第一个条件是引用作为NSEntityDescription的一部分的NSManagedObject,它的name属性只是一个字符串。

于 2010-05-07T03:19:41.463 回答