1

嘿,我在这里有点困惑..

我正在将 EyeTunes 框架用于一个小型学习项目。这是一个 iTunes 控制器。

该框架为我提供了一系列当前存在于 iTunes 中的播放列表。由于一些播放列表包含数千个曲目,我计划在“applicationDidFinishLaunching”方法中创建每个播放列表的曲目对象数组。(并保留这些数组)
这样,当绑定系统应该显示播放列表的曲目列表时,它现在不必加载整个列表。到目前为止还不错。。

现在,要为我想要做的每个播放列表创建这些轨道数组:
(allPlaylists 是一个包含所有 iTunes 播放列表 [ETPlaylist*]
的数组;ETPlaylist 使用它的“轨道方法”返回一个轨道数组)

for (ETPlaylist *aPlaylist in allPlaylists){

    arrayContainingTracks = [aPlaylist tracks]

}

所以

  1. 如何在每个枚举中为“arrayContainingTracks”设置不同的名称?
    以及如何在必须声明所有实例 Var 的头文件中做到这一点?

  2. 顺便说一句:数组在分配时会将其内容加载到内存中的关系级别达到多少?

4

1 回答 1

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方法。

于 2010-11-05T02:00:46.003 回答