我正在使用EyeTunes框架进行一些学习项目。这是一个iTunes控制器。
该框架为我提供了一系列目前存在于iTunes中的播放列表。
由于某些播放列表包含数千个曲目,我计划在“applicationDidFinishLaunching”方法中创建每个播放列表的曲目对象数组。 (并保留这些数组)
这样,当绑定系统应该显示播放列表的曲目列表时,它不必加载整个列表。到目前为止一切顺利......
现在,为我想要做的每个播放列表创建这些轨道数组:
(allPlaylists是一个包含所有iTunes播放列表的数组[ETPlaylist *];
ETPlaylist返回一个Tracks数组,其中包含“track方法”)
for (ETPlaylist *aPlaylist in allPlaylists){
arrayContainingTracks = [aPlaylist tracks]
}
所以
如何在每个枚举中为“arrayContainingTracks”设置不同的名称?
以及如何在头文件中执行此操作,其中必须声明所有实例Vars?
和BTW:数组在分配时将内容加载到内存的关系是什么级别?
答案 0 :(得分: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
方法。