- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
歌曲(播放列表)<<---->(歌曲)ListToSong(播放列表)<---->>(歌曲)列表
我想使用获取请求获取给定播放列表的所有歌曲。
以下对 ListToSong 的查询有效。这会获取所有 PlayListToSong objs,我可以使用 obj.song 来获取 Song 对象。还返回按 sortOrder 排序的数据。效果很好。 (为简洁起见,下面的代码片段是使用 MagicalRecord 编写的)。
songFilter = [NSPredicate predicateWithFormat:@"playlist == %@", filterList];
linkObjs = [FRListToSongs MR_findAllSortedBy:@"sortOrder" ascending:YES withPredicate:songFilter inContext:ctxt];
以下对 Song 实体的查询导致崩溃。如果我删除排序描述符并只获取,它就可以工作。所以问题在于 sortDescriptor“playlists.sortOrder”,它试图根据 ListToSongs 实体中的属性进行排序。
songFilter = [NSPredicate predicateWithFormat:@"ANY playlists.playlist == %@", filterList];
songs = [FRSong MR_findAllSortedBy:@"playlists.sortOrder" ascending:YES withPredicate:songFilter inContext:ctxt];
在纯 SQL 中(下面给出),我试图在 Song 和 ListToSong 之间进行连接,并按“sortOrder”字段排序。
SELECT DISTINCT 0, t0.Z_PK, t0.Z_OPT, t0.ZNAME, t0.ZSEQ FROM ZSONG t0 JOIN ZFRLISTTOSONGS t1 ON t0.Z_PK = t1.ZSONG WHERE t1.ZPLAYLIST = ? order by t1.ZSORTORDER
如何将上述 SQL 映射到 coredata 语法并提供正确的 sortDescriptor?
请注意,唯一的问题是如何在最后获得“按 t1.ZSORTORDER 排序”,因为我无法正确指定 sortDescriptor。提取请求在没有排序描述符的情况下也能正常工作。
最佳答案
我终于在我的问题中提到了上面提到的“方法 1”。我获取了 ListToSong 实体并使用 obj.song 来获取相关的 Song 对象。我使用 relationshipKeyPathsForPrefetching 来预取链接到 ListToSong 对象的歌曲对象。
关于ios - 如何对多对多关系的属性使用 sortDescriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12381585/
我是一名优秀的程序员,十分优秀!