我想使用 iTunes.h
获取 iTunes 上专辑中的所有轨道。
现在我通过以下方式获取当前轨道的数据:
NSInteger trackID = iTunes.currentTrack.databaseID;
NSString *name = iTunes.currentTrack.name;
专辑名称:
NSString *trackAlbum = iTunes.currentTrack.album;
但是我不知道如何获取与当前轨道相同的专辑中的所有轨道。
有任何想法吗?谢谢
最佳答案
iTunes API 写得不好。 您必须使用谓词过滤数组。
NSArray *allSongs = [self allSongs];
NSArray *songsOfAlbum = [allSongs filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"album == %@ && artist == %@", albumString, artistString]];
您可以获得这样的所有歌曲:
// Get all Songs
- (NSArray *)allSongs {
if (_allSongs == nil) {
NSArray *tracksToPlay = [(SBElementArray *)[self.library tracks] get];
// Sort by artist
_allSongs = tracksToPlay;
}
return _allSongs;
}
- (iTunesLibraryPlaylist *)library {
if (_library == nil) {
// Whole Library
iTunesSource *source = [[[[self.iTunes sources] get] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"kind == %i", iTunesESrcLibrary]] objectAtIndex:0];
// Only the Music
_library = [[[[source playlists] get] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"specialKind == %i", iTunesESpKMusic]] objectAtIndex:0];
}
return _library;
}
关于objective-c - 如何使用 iTunes.h/Scripting Bridge 获取专辑中的所有轨道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076113/