Objective-C を学ぶために本を読んでいます。演習の 1 つに行き詰まっています。クラスソング、プレイリスト、音楽コレクションを含むプログラムを作成する必要があります。曲を作成する場合、曲を収集するための NSMutableArray を持つ音楽コレクションに自動的に追加する必要があります。また、音楽コレクションからオブジェクトを削除すると、その曲を含むすべてのプレイリストから曲を削除する必要があります。
ソングインターフェース
#import <Foundation/Foundation.h>
@interface Song : NSObject{
NSString *title;
NSString *artist;
NSString *album;
}
@property (copy) NSString *title;
@property (copy) NSString *artist;
@property (copy) NSString *album;
-(Song *) initWithNames:(NSString*) title1 and: (NSString*) artist1 and: (NSString*) album1;
@end
プレイリスト インターフェイス
#import <Foundation/Foundation.h>
@interface Playlist : NSObject{
NSString * title;
NSMutableArray *collecsongs;
}
@property (strong) NSString *title;
@property (strong) NSMutableArray *collecsongs;
-(Playlist *) initWithName: (NSString *) name;
@end
音楽コレクション インターフェイス
#import <Foundation/Foundation.h>
#import "Playlist.h"
@interface MusicCollection : NSObject{
NSMutableArray *collecplist;
Playlist *library;
}
@property (strong) NSMutableArray *collecplist;
@property (strong) Playlist *library;
@end
したがって、たとえばsong1の曲を作成する場合、それをプレイリストに追加する方法はありますか?これを行う代わりに、自動的にmastercoleection変数「ライブラリ」に追加します
Song *song1 = [[Song alloc] initWithNames:@"Somebody That I Used To Know" and: @"Gotye" and: @"First Album"];
Playlist *Misrolas = [[Playlist alloc] initWithName: @"Misrolas"];
MusicCollection *music = [[MusicCollection alloc] init];
[Misrolas.collecsongs addObject: song1];//adds song1 to the playlist named "Misrolas"
[music.library.collecsongs addObject: song1];//adds song1 to the music collection
だから私は何をすべきかわからない、おそらく addObject: をオーバーライドすることを考えていましたが、それは正しく簡単ではないようです、助けてくれてありがとう =)
私はこのようにしていますが、それを追加するためのより効率的またはより良い方法はありますか???
-(void) addsong: (Song *)song addtocollection: (Playlist *) library{
NSAssert([song isKindOfClass: [Song class]], @"Not the same class");
[self.collecsongs addObject:song];
[library.collecsongs addObject: song];
}