如何使用 itlibrary.h 仅从 iTunes 库中获取歌曲

How to get only songs from itunes library with itlibrary.h

这是文档所说的从库中获取所有媒体项目的方式,但我只想获取歌曲。

#import <iTunesLibrary/ITLibrary.h>

ITLibrary *library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error];
if (library)
{
    tracks = library.allMediaItems; //  <- NSArray of ITLibMediaItem
}

我找到了这个答案:How to get all tracks from an album using iTunes.h/Scripting Bridge

我不确定如何调整它来完成我需要它做的事情,或者它现在不那么复杂了?

tracks = library.allMediaItems;NSArrayITLibMediaItem 个对象。

根据文档,作为 属性 mediaKind 赋予它的项目是一首歌曲 (ITLib​Media​Item​Media​Kind​Song) 或另一种媒体。

所以,你只需要使用谓词:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mediaKind == %d", ITLib​Media​Item​Media​Kind​Song]]

因此要过滤(使用前面的谓词)

tracks = [library.allMediaItems filteredArrayUsingPredicate:predicate];