Objective c 如何将数组存储在目标C中的数组中?

Objective c 如何将数组存储在目标C中的数组中?,objective-c,Objective C,我的问题是,我有一个练习要求创建3个类: 歌曲(创建和设置歌曲) 播放列表(用于创建和添加歌曲) MusicCollection(要有一个播放列表集合)现在这门课很棘手,我需要在播放列表集合中有一个主库播放列表,它将包含集合中的每首歌曲 因此,从我看到的一些人在类型为Playlist的MusicCollection属性(称为library)中定义,并在初始化时定义: -(id) initWithName: (NSString *) theName { self = [super

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

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

因此,从我看到的一些人在类型为Playlist的MusicCollection属性(称为library)中定义,并在初始化时定义:

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

}  

但是,如果我创建一个播放列表并将其添加到音乐收藏中,会怎么样?无需通过MusicCollection方法添加歌曲即可添加歌曲。

以便对象比较工作

-(void) addPlaylist: (Playlist *) thePlaylist  
{  
    if ([musicCollection containsObject: thePlaylist] == NO)  
        [musicCollection addObject: thePlaylist];  
}  
您必须覆盖
播放列表中的
isEqual:
方法

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

}

有关更多信息,请按照下面的对象比较进行操作

是否有将歌曲添加到播放列表的代码?是的,请查看我添加到问题中的代码。谢谢@SteveO'Connor