2013-03-05 83 views
0

我的问题是,我有一个要求,以创建3个班的练习:如何让数组存储在Objective C中的数组内?

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

所以,从我看到有些人在MusicCollection属性中定义了Playlist类型称为库,并在初始化时执行:

-(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方法添加的歌曲添加歌曲..

+0

您是否有一些代码将歌曲添加到播放列表中? – 2013-03-05 23:32:36

+0

是的,请查看我添加到问题中的代码。谢谢@ SteveO'Connor – MNY 2013-03-05 23:40:53

回答

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