诀窍是将整个 iTunes 库作为一个数组,然后使用 Cocoa 的NSPredicate
过滤来查找您想要的内容。
iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
SBElementArray *iTunesSources = [iTunes sources];
iTunesSource *library;
for (iTunesSource *thisSource in iTunesSources) {
if ([thisSource kind] == iTunesESrcLibrary) {
library = thisSource;
break;
}
}
SBElementArray *libraryPlaylists = [library libraryPlaylists];
iTunesLibraryPlaylist *libraryPlaylist = [libraryPlaylists objectAtIndex:0];
SBElementArray *musicTracks = [self.libraryPlaylist fileTracks];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"persistentID == %@", persistentID];
[musicTracks filterUsingPredicate:predicate];
一般来说,尽可能少地使用 Scripting Bridge 方法通常是一个很好的经验法则——使用它们来获取数据,然后使用普通的 Cocoa 方法处理其他所有事情。