iOS核心数据addRelationshipObject和addRelationship之间的多对多关系差异?

时间:2013-10-18 03:47:20

标签: ios core-data many-to-many

目前,我正在创建一个使用核心数据作为本地存储的应用程序。我对我的应用程序的两个实体有疑问:艺术家和专辑。一位艺术家可以制作多张专辑,而一张专辑也可以由几位艺术家组成。

#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";

接下来我应该怎么做才能存储我想要的信息。 提前感谢所有评论!

1 个答案:

答案 0 :(得分:0)

addToAlbumsObject:单个相册对象添加到艺术家的toAlbums关系中, e.g。

Artists *anArtist = ...;
Albums *anAlbum = ...;
[anArtist addToAlbumsObject:anAlbum];

建立anArtistanAlbum之间的关系。

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];
相关问题