2017-03-29 3 views
0

Dies ist die Art, wie die Dokumentation sagt, alle Medienelemente aus der Bibliothek zu bekommen, aber ich möchte nur die Lieder bekommen.So erhalten Sie nur Titel aus itunes-Bibliothek mit itlibrary.h

#import <iTunesLibrary/ITLibrary.h> 

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

fand ich diese Antwort: How to get all tracks from an album using iTunes.h/Scripting Bridge

Ich bin nicht sicher, wie man es anpassen zu tun, was ich brauche es, oder vielleicht ist es jetzt weniger kompliziert?

+0

Es scheint, dass Sie immer noch mit einem 'NSPredicate' filtern müssen, suchen für 'tracks = [library.allMediaItems filteredArrayUsingPredicate: [NSPredicate predicateWithFormat: @" mediaKind ==% d ", ITLib Medienelement Media Kind Song]];' – Larme

+0

funktioniert super danke. Ich dachte, es könnte dasselbe sein, aber ich kannte die neuen Namen nicht. Wenn Sie es zu einer Antwort machen, werde ich es akzeptieren – Neal

+0

Ich lese gerade die Dokumentation von 'ITLibMediaItem' (https://developer.apple.com/reference/ituneslibrary/itlibmediaitem?language=objc) und weiß, wie man ein' 'verwendet/konstruiert NSPredikat'. Nichts ist dort komplizierter. – Larme

Antwort

1

tracks = library.allMediaItems; ist ein NSArray von ITLibMediaItem Objekte.

Laut dem Dokument, es als eine Eigenschaft mediaKind, die gibt es das Element ist ein Lied (ITLib​Media​Item​Media​Kind​Song) oder eine andere Art von Medien.

Also, man muss nur das Prädikat verwenden:

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

So zu filtern (mit früherem Prädikat)

tracks = [library.allMediaItems filteredArrayUsingPredicate:predicate]; 
Verwandte Themen