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];你不断添加相同的对象,_countCat1一遍又一遍。您需要创建新的 NSDictionary 并将其添加到集合_countCat1中。

于 2013-04-16T18:21:24.527 回答