如何在Objective C中将数组存储在数组中?

时间:2013-03-05 23:25:28

标签: objective-c

我的问题是,我有一个要求创建3个类的练习:

歌曲(创建和设置歌曲) 播放列表(为其创建和添加歌曲) MusicCollection(有一个播放列表的集合)现在这个类很棘手,我需要在播放列表集合中有一个主library播放列表,它将包含集合中的每首歌...

所以,从我看到的一些人在Playlist类型的MusicCollection属性中定义了调用库,并在初始化中他们这样做:

-(id) initWithName: (NSString *) theName  
{  
    self = [super init];  

    if (self) {  
        musicCollection = [[NSMutableArray alloc] init];  
        library = [[Playlist alloc] initWithName: @"library"];  
        [musicCollection addObject: library];  
    }  
    return self;  
}  

据我所知,每次用户初始化一个集合时,播放列表对象都会被添加到集合数组中......

问题是,在一个集合的addPlaylist方法中,他们没有将这个播放列表歌曲添加到库中......就像这样:

-(void) addPlaylist: (Playlist *) thePlaylist  
{  
    if ([musicCollection containsObject: thePlaylist] == NO)  
        [musicCollection addObject: thePlaylist];  
}  

有什么想法?我真的坚持这个:/

我可能在集合数组中有一个数组的库,并遍历它以查看歌曲是否在库中,如果没有添加它们..

现在,在Playlist.m中,addsong方法是:

-(void) addSong:(Song *)theSong  
{  
    [playList addObject:theSong];  
}  

但我看到在MusicCollection.m中他们添加了一种方法来添加将歌曲添加到库中的歌曲:

-(void) addSong: (Song *) theSong toPlaylist: (PlayList *) thePlaylist  
{  
    if([thePlaylist.playList containsObject:theSong]==NO)  
        [thePlaylist addSong:theSong];  

    if([library.playList containsObject:theSong]==NO)  
        [library addSong:theSong];  

}  

但是,如果我创建一个播放列表并将其添加到MusicCllection,该怎么办?没有通过MusicCollection方法添加歌曲来添加歌曲..

1 个答案:

答案 0 :(得分:0)

用于对象比较

-(void) addPlaylist: (Playlist *) thePlaylist  
{  
    if ([musicCollection containsObject: thePlaylist] == NO)  
        [musicCollection addObject: thePlaylist];  
}  

您必须覆盖isEqual:

中的PlayList方法
- (BOOL)isEqual:(id)other {

    if (other == self)
        return YES;

    if (!other || ![other isKindOfClass:[self class]])
        return NO;

    return [self isEqualToPlayList:other];

}

 //Assuming playListId is an unique identifier in `PlayList`
- (BOOL)isEqualToPlayList:(PlayList*)playList{

    if (self == playList)
        return YES;

    if (self.playListId != playList.playListId)
        return NO;
    //If you you a combinational uniqueness, check for them as well

    return YES;

}

有关详细信息,请按照以下link

中的对象比较进行操作