2007Cocoa Cursus
rss

Huiswerk

Hulp!

Kom je er niet uit: mail voor een aanwijzing.

1 2

Deze bijeenkomst heeft als thema 'iTunes'. Ons doel is om een audio-speler te maken die het mogelijk maakt om muziek uit de iTunes bibliotheek af te spelen.

iTunes bewaart de bibliotheek in twee aparte bestanden. Het eerste bestand bevat alle informatie en is alleen voor iTunes zelf bedoeld. Daarnaast bewaart iTunes de belangrijkste informatie uit de bibliotheek in een extra XML bestand, te vinden in ~/Music/iTunes/iTunes Music Library.xml. Dit bestand is speciaal voor gebruik door andere programma's, ook van Apple (Zie ook deze pagina). We gaan dit bestand XML bestand gebruiken om 'tunes' te vinden op de computer.

  1. Open het .xml bestand en onderzoek hoe het is opgebouwd.

Een belangrijk kenmerk van het bibliotheekbestand is dat het niet alleen een XML bestand is, maar ook een Property List.

  1. Controleer dat dit inderdaad zo is door het bestand met Property List Editor te openen.

Property lists spelen een belangrijke rol binnen Cocoa en komen vaak goed van pas bij het opslaan van gegevens.

  1. Onderzoek wat Property Lists precies zijn...

De iTunes bibliotheek vormt het middelpunt van ons programma. In de Model-View-Controller methodologie is de bibliotheek het model.

Voor het inlezen van het iTunes XML bestand ontwerpen we een nieuwe klasse die we ITunesLibrary zullen noemen. ITunesLibrary klasse heeft twee variabelen; tracks en playlists. tracks is een dictionary met daarin voor elke track in de bibliotheek een dictionary met gegevens zoals artiest, bestandsnaam, etcetera. Deze dictionaries kopiƫren we direct uit het XML bestand. De playlists variabele is een array van dictionaries die ieder een playlist vertegenwoordigen. Iedere playlist dictionary heeft een naam en een array met tracks.

De interface van ITunesLibrary ziet er dan als volgt uit:

@interface ITunesLibrary : NSObject
{
    @private
    NSDictionary  *tracks;     // key: uniek track ID
    NSArray       *playlists;  // dictionaries met keys: 'naam' en 'tracks'
}

//  open het xml bestand en lees de playlists en tracks
- (void)open;

//  accessors
- (NSDictionary *)tracks;
- (void)setTracks:(NSDictionary *)newTracks;
- (NSArray *)playlists;
- (void)setPlaylists:(NSArray *)newPlaylists;
@end

In de open: methode wordt het XML bestand geopend en de track- en playlistinformatie ingelezen.

Implementeer ITunesLibrary (zover als je kunt). Dit vormt het startpunt van bijeenkomst 4.