2017-12-31 40 views
1

Mein Programm automatisiert eine Radiostation. Es gibt viel Kommunikation zwischen iTunes und iTunes. Ich habe es mit Scripting Bridge programmiert. Scripting Bridge leidet unter Speicherlecks. Jeder Aufruf der Skriptbrücke führt zu einer geringen Speicherauslastung. Fügen Sie viele Aufrufe zu einem Programm hinzu, das rund um die Uhr läuft, und ich habe eine Software, die für weniger als 24 Stunden läuft und dann beendet wird.ITLibrary gibt mir nichts als (null)

Mein erster Versuch einer Lösung bestand darin, meine Aufrufe zur Skript-Bridge zu minimieren. Bei der Recherche zu diesem Ziel stieß ich auf ItunesLibrary. Es funktioniert nicht für mich.

NSError *error = nil; 
ITLibrary *library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error]; 
if (library) 
{ 
    NSArray *playlists = [[NSArray alloc]init]; 
    playlists = library.allPlaylists; 
    NSArray *tracks = [[NSArray alloc]init]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mediaKind == %d", ITLibMediaItemMediaKindSong]; 
    tracks = [library.allMediaItems filteredArrayUsingPredicate:predicate]; 

    NSLog(@"Playlists - %@",playlists); 
    NSLog(@"Tracks - %@",tracks); 
} 

Dieser Code ist ziemlich genau aus Apples Dokumentation. Es sollte funktionieren - denke ich.

Bevor ich das Prädikat hinzugefügt habe, habe ich einige Informationen zu jedem der Podcasts in meiner iTunes-Bibliothek erhalten. In der nslog-Ausgabe erzeugt jede meiner Playlists einen ähnlichen Eintrag wie "". Jeder meiner Songs zeigt nichts mehr als (null).

Alle Informationen sind in iTunes. Ich kann es mit Scripting Bridge lesen. Ich kann es mit AVAsset lesen

Mit AVAsset bekomme ich nur den Song-Namen, Album-Namen und Künstlername. Ich muss auf die restlichen ID3-Tags von iTune zugreifen.

Was habe ich, um ItunesLibrary zu brechen?

Antwort

0

Das Geheimnis, um ItunesLibrary zum Funktionieren zu bringen, scheint in der Berechtigungsdatei zu sein. Sie müssen den Schlüssel "com.apple.security.assets.music.read-only" hinzufügen und auf YES setzen. Ich habe das bekommen, indem ich ein Projekt auf github.com durchforstet habe.

Verwandte Themen