目前,我正在创建一个使用核心数据作为本地存储的应用程序。我对我的应用程序的两个实体有疑问:艺术家和专辑。一位艺术家可以制作多张专辑,而一张专辑也可以由几位艺术家组成。
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class Albums;
@interface Artists : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *toAlbums;
@end
@interface Artists (CoreDataGeneratedAccessors)
- (void)addToAlbumsObject:(Albums *)value;
- (void)removeToAlbumsObject:(Albums *)value;
- (void)addToAlbums:(NSSet *)values;
- (void)removeToAlbums:(NSSet *)values;
@end
addToAlbumsObject :( Albums *)value&amp; addToAlbums:(NSSet *)值?
如果我想向艺术家和专辑插入一些信息,例如,艺术家“Jame”和“Jonh”制作了2张专辑“天空专辑”和“星际专辑”,以及“天空专辑”。这是我做的代码。
NSManagedObjectContext *context = [self managedObjectContext];
Artists *artists = [NSEntityDescription insertNewObjectForEntityForName:@"Artists" inManagedObjectContext:context];
artists.name = @"Jame";
Albums *albums = [NSEntityDescription insertNewObjectForEntityForName:@"Albums" inManagedObjectContext:context];
albums.name = @"sky album";
接下来我应该怎么做才能存储我想要的信息。 提前感谢所有评论!
答案 0 :(得分:0)
addToAlbumsObject:
将单个相册对象添加到艺术家的toAlbums
关系中,
e.g。
Artists *anArtist = ...;
Albums *anAlbum = ...;
[anArtist addToAlbumsObject:anAlbum];
建立anArtist
和anAlbum
之间的关系。
addToAlbums:
只需一步即可将多个相册对象添加到toAlbums
关系中:
Artists *anArtist = ...;
Albums *album1 = ...;
Albums *album2 = ...;
NSSet *setOfAlbums = [NSSet setWithObjects:album1, album2, nil];
[anArtist addToAlbums:setOfAlbums];
这是(我认为)较少使用,因为你可以通过调用实现相同的目的
每张专辑分别addToAlbumsObject:
。
如果您使用单数表单作为您的实体名称(相册,艺术家)并将关系从toAlbums
重命名为albums
,也许所有内容都会变得不那么混乱。
然后第一个代码块变为:
Artist *anArtist = ...;
Album *anAlbum = ...;
[anArtist addAlbumsObject:anAlbum];