1

эй, у меня здесь немного путаницы.создание экземпляров-переменных во время выполнения?

Я использую EyeTunes Framework для небольшого учебного проекта. Это контроллер iTunes.

Рамка предоставила мне множество плейлистов, существующих в iTunes. Поскольку некоторые плейлисты содержат тысячи треков, я планирую создавать массивы треков-объектов каждого плейлиста в методе «applicationDidFinishLaunching». (и сохранить эти массивы)
Таким образом, когда система привязок должна отображать список треков списка воспроизведения, на данный момент не нужно загружать весь этот список. Так же до сих пор ..

Теперь, чтобы создать эти дорожки-массивы для каждого списка я хотел бы сделать:
(allPlaylists представляет собой массив, содержащий все ITunes плейлистов [ETPlaylist *];
ETPlaylist возвращает массив дорожки с его «метод следов»)

for (ETPlaylist *aPlaylist in allPlaylists){ 

    arrayContainingTracks = [aPlaylist tracks] 

} 

так

  1. Как я установить другое имя для «arrayContainingTracks» в каждом перечислении?
    И как это сделать в файле заголовка, в котором должны быть объявлены все экземпляры Vars?

  2. и BTW: до какого уровня отношений массив загружает содержимое в память при распределении?

ответ

2

Я не уверен, что полностью понимаю вопрос (почему бы вы хотели изменить имя переменной?). Но следующий код будет вставлять каждые треки каждых плейлистов в arrayContainingTracks (при условии, что это экземпляр NSMutableArray):

for (ETPlaylist *aPlaylist in allPlaylists) 
{ 
    [arrayContainingTracks addObjectsFromArray:[aPlaylist tracks]]; 
} 

Обратите внимание, что все дорожки будут сплющенной в массиве. Если вы хотите предварительно загрузить каждый трек, но и сохранить имя плейлиста, хранить их в NSMutableDictionary вместо:

for (ETPlaylist *aPlaylist in allPlaylists) 
{ 
    [playlistsByName setObject:[aPlaylist tracks] forKey:[aPlaylist name]]; 
} 

Вот, я предполагаю, что ETPlaylist класс имеет метод name.

+0

Спасибо! То, что я имел в виду, не меняет имя. Я подумал: В первом перечислении: arrayContainingFirstPlaylistTracks = [FirstPlaylist tracks] >> Во втором перечислении: arrayContainingSecondPlaylistTracks = [Следы SecondPlaylist] и т. Д. Я знаю, что это, может быть, немного странно;) – bijan

+0

Итак, в вашем первом фрагмент кода, массив будет содержать все треки без какой-либо информации, к которой они принадлежат? – bijan

+0

@bijan Да, первый фрагмент кода сохраняет только дорожки. –

Смежные вопросы