值自动更改

时间:2013-04-16 17:57:43

标签: objective-c dictionary

你好我在一起有一个问题: 我读出了播放媒体歌曲的实际值,并将其添加到字典中。 然后进入一个数组。如果我再次按下按钮添加一个新条目,则所有的所有值都会变为相同。 你知道为什么?

这是我的代码:

    - (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];

}

2 个答案:

答案 0 :(得分:1)

您正在每次通话中修改相同的词典_dictCat1。您需要在本地创建字典并将其添加到_countCat1

[_countCat1 addObject:@{ @"Title": titleString, 
                         @"Artist": artistString, 
                         @"Album": albumString }];

答案 1 :(得分:0)

将对象添加到集合(NSArray,NSDictionary,NSSet等,包括可变对应项)时,集合不会复制它。使用[_countCat1 addObject:_dictCat1];,您可以反复将相同的对象添加到_countCat1。您需要创建新的NSDictionary并将 添加到_countCat1集合。