I have a fetch request as follows:
NSFetchRequest *songRequest = [NSFetchRequest fetchRequestWithEntityName:@"Song"];
I also have an NSSet of Genre (NSManagedObjects) called genreFilter.
I want to set up a predicate to filter songs that have relationships to the genres in genreFilter.
Could I set up an NSPredicate in this manner:
NSPredicate *songRequestPredicate = [NSPredicate predicateWithFormat:@"genre IN %@", [_genreFilter allObjects]];
?
Genres look like this:
@interface Genre : NSManagedObject
@property (nonatomic, strong) NSNumber * id;
@property (nonatomic, strong) NSString * name;
@property (nonatomic, strong) NSSet *preset;
@property (nonatomic, strong) NSSet *song;
@end
@interface Genre (CoreDataGeneratedAccessors)
- (void)addPresetObject:(Preset *)value;
- (void)removePresetObject:(Preset *)value;
- (void)addPreset:(NSSet *)values;
- (void)removePreset:(NSSet *)values;
- (void)addSongObject:(Song *)value;
- (void)removeSongObject:(Song *)value;
- (void)addSong:(NSSet *)values;
- (void)removeSong:(NSSet *)values;
@end
and songs like this:
@interface Song : NSManagedObject
@property (nonatomic, strong) NSNumber * arousal;
@property (nonatomic, strong) NSNumber * id;
@property (nonatomic, strong) NSNumber * match;
@property (nonatomic, strong) NSNumber * popularity;
@property (nonatomic, strong) NSNumber * valence;
@property (nonatomic, strong) NSNumber * cloud;
@property (nonatomic, strong) Genre *genre;
@property (nonatomic, strong) Year *year;
@property (nonatomic, strong) Period *period;
@property (nonatomic, strong) NSNumber *yearReleased;
@property (nonatomic, assign) float score;
@property (nonatomic, readonly) MPMediaItem *mediaItem;
@end
Yes. That looks correct to me.
Here is an answer I gave to another question, it contains simple instructions and code to get a barebones core-data project up and running. I often use this basic setup to quickly test things like this.