我有一个简单的问题。我想将音频文件放入表格视图。如何将它们与pdf和电影等区分开?
我通过Scripting Bridge从iTunes获得它们:
iTunesSource *source = [[[self iTunes] sources] objectAtIndex:0];
iTunesPlaylist *mainPlaylist = [[source libraryPlaylists] objectAtIndex:0] ;
library_ = [[NSArray arrayWithArray:[mainPlaylist tracks]] retain ] ;
这给我一个错误,指出找不到类iTunesFileTrack(在链接时)
:
[track get];
if(![track isKindOfClass:[iTunesFileTrack class]]) {
DLog1(@"SKIPPING kind: %@", [track kind]);
}
我确定我缺少一些简单的方法:)
在相关说明中:是否有更快的读取iTunes库的方法?我只是建议从xml文件加载它,但对我来说似乎不安全。如果苹果在下一个版本中有任何改变,我就搞砸了。
谢谢
编辑:使用
sdef /Applications/iTunes.app | sdp -fhm --basename iTunes
我可以生成.m文件,我需要检查该类。但这似乎不起作用:[track get];
if(![[track className] isEqualToString:@"ITunesFileTrack"]) {
DLog1(@"SKIPPING kind: %@", [track kind]);
continue;
}
只跳过我的视频流:P不看电影。 (甚至当我添加
(track.videoKind != iTunesEVdKNone)
时)。甚至PDF都是iTunesFileTracks。但是.h指出:// a track representing an audio file (MP3, AIFF, etc.)
@interface iTunesFileTrack : iTunesTrack
最佳答案
我在代码中使用了类似的内容,因此它应该可以工作(app
是iTunes SBApplication
):
1.)首先获取库源
- (ITunesSource *)librarySource {
NSArray *sources = [[app sources] get];
NSArray *libs = [sources filteredArrayUsingPredicate:[NSPredicate
predicateWithFormat:@"kind == %i",
ITunesESrcLibrary]];
if ([libs count]) {
return [libs objectAtIndex:0];
}
return nil;
}
2.)遍历库播放列表
NSArray *libraryLists = [[[self librarySource] libraryPlaylists] get];
for (ITunesLibraryPlaylist *list in libraryLists) {
NSArray *listTracks = [[list fileTracks] get];
for (ITunesTrack *listTrack in listTracks) {
// do stuff...
}
[listTracks release];
}
3.)您可以像这样检查其他轨道类型
if (track.videoKind != ITunesEVdKNone || track.podcast) {
// track is not of type music
}
关于cocoa - 如何仅从iTunes主库中获取音频文件(由Scripting Bridge返回)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5392300/