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