1

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

#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 和 addToAlbums:(NSSet *)values 有什么区别?

如果我想在艺术家和专辑中插入一些信息,例如,艺术家“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";

为了存储我想要的信息,我接下来应该做什么。提前感谢所有评论!

4

1 回答 1

0

addToAlbumsObject:单个专辑对象添加到toAlbums艺术家的关系中,例如

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

anArtist建立和之间的关系anAlbum

addToAlbums:只需一步即可将多个Album 对象添加到关系中: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];
于 2013-10-18T04:02:12.760 回答