如何将enum作为参数传递给objectivec中的函数

U-L*_*U-L 11 enums objective-c

头文件看起来像:

enum RatingsEnum
{
    userRating,
    criticRating,
};

@interface SFMovie : NSObject

- (NSNumber *)getRating:(NSDictionary *)movieDic :(enum RatingsEnum) rating;

@end
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用这个方法getRating?我不知道如何通过枚举.我的通话代码:

- (void) testGetCriticRatingMethod{

    NSMutableDictionary *ratingDictionary = [[NSMutableDictionary alloc]init];
    [ratingDictionary setObject:@"Certified Fresh" forKey:@"critics_rating"];
    [ratingDictionary setObject:@"70" forKey:@"critics_score"];
    [ratingDictionary setObject:@"Certified Fresh" forKey:@"audience_rating"];
    [ratingDictionary setObject:@"87" forKey:@"audience_score"];
    SFMovie *movie = [[SFMovie alloc]init];
    enum RatingsEnum ratings;
    NSInteger userRating = [movie getRating:ratingDictionary rating:userRating];
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下警告: 'SFMovie'没有可见的@interface声明选择器'getRating:rating:'

有人可以指导我一个好的enum教程吗?谢谢你们.

Eth*_*ang 17

更改

 - (NSNumber *)getRating:(NSDictionary *)movieDic :(enum RatingsEnum) rating;
Run Code Online (Sandbox Code Playgroud)

 - (NSNumber *)getRatingWithDictionary:(NSDictionary *)movieDic ratingEnum:(enum RatingsEnum) ratingEnum;
Run Code Online (Sandbox Code Playgroud)

更改

 enum RatingsEnum ratings;
 NSInteger userRating = [movie getRating:ratingDictionary rating:userRating];
Run Code Online (Sandbox Code Playgroud)

 enum RatingsEnum ratings = userRating;
 NSNumber *ratingFromUser = [movie getRatingWithDictionary:ratingDictionary ratingEnum:ratings];
Run Code Online (Sandbox Code Playgroud)