0

こんにちは、問題があります。再生中のメディア ソングの実際の値を読み取り、それを辞書に追加します。そして、配列に。ボタンをもう一度押して新しいエントリを追加すると、すべてのエントリのすべての値が同じに変わります。理由はありますか?

ここに私のコード:

    - (IBAction)ActionButtonLU:(id)sender
{
    MPMediaItem *currentItem = [musicPlayer nowPlayingItem];

    NSString *titleString = [currentItem valueForProperty:MPMediaItemPropertyTitle];
    NSString *artistString = [currentItem valueForProperty:MPMediaItemPropertyArtist];
    NSString *albumString = [currentItem valueForProperty:MPMediaItemPropertyAlbumTitle];

    if (titleString == nil) {
        titleString = @"";
    }
    if (artistString == nil) {
        artistString = @"";
    } 
`  `if (albumString == nil) {
        albumString = @"";
    }

    [_dictCat1 setObject:titleString forKey:@"Titel"];
    [_dictCat1 setObject:artistString forKey:@"Artist"];
    [_dictCat1 setObject:albumString forKey:@"Album"];

    [_countCat1 addObject:_dictCat1];

    [musicPlayer skipToNextItem];

}
4

2 に答える 2

1

_dictCat1すべての呼び出しで同じ辞書 を変更しています。辞書をローカルに作成し、それを に追加する必要があります_countCat1

[_countCat1 addObject:@{ @"Title": titleString, 
                         @"Artist": artistString, 
                         @"Album": albumString }];
于 2013-04-16T18:18:22.027 に答える
0

オブジェクトをコレクション (変更可能な対応物を含む NSArray、NSDictionary、NSSet など) に追加すると、コレクションはそれをコピーしません。同じオブジェクトを何度[_countCat1 addObject:_dictCat1];も追加し続けます。新しい NSDictionary を作成し、それをコレクションに追加する必要があります。_countCat1_countCat1

于 2013-04-16T18:21:24.527 に答える