1

ねえ、私はここで少し混乱しています..

ちょっとした学習プロジェクトに EyeTunes Framework を使用しています。それはiTunesコントローラーです。

このフレームワークは、現在 iTunes に存在するプレイリストの配列を提供してくれました。一部のプレイリストには数千のトラックが含まれているため、「applicationDidFinishLaunching」メソッドで各プレイリストのトラック オブジェクトの配列を作成する予定です。(そしてそれらの配列を保持します)
そうすれば、バインディングシステムがプレイリストのトラックリストを表示する必要があるときに、現時点でそのリスト全体をロードする必要はありません。ここまで順調に..

ここで、やりたかった各プレイリストのトラック配列を作成するには:
(allPlaylists は、すべての iTunes プレイリストを含む配列です [ ETPlaylist* ];
ETPlaylist は、「tracks メソッド」でトラックの配列を返します)

for (ETPlaylist *aPlaylist in allPlaylists){

    arrayContainingTracks = [aPlaylist tracks]

}

それで

  1. 各列挙で「arrayContainingTracks」に別の名前を設定するにはどうすればよいですか?
    そして、すべてのインスタンス Vars を宣言する必要があるヘッダー ファイルでそれを行う方法は?

  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 に答える