Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何将枚举作为参数传递给Objective中的函数_Objective C_Enums - Fatal编程技术网

Objective c 如何将枚举作为参数传递给Objective中的函数

Objective c 如何将枚举作为参数传递给Objective中的函数,objective-c,enums,Objective C,Enums,头文件如下所示: enum RatingsEnum { userRating, criticRating, }; @interface SFMovie : NSObject - (NSNumber *)getRating:(NSDictionary *)movieDic :(enum RatingsEnum) rating; @end 如何使用此方法获取评级?我不知道如何通过枚举。我的电话号码: - (void) testGetCriticRatingMethod{

头文件如下所示:

enum RatingsEnum
{
    userRating,
    criticRating,
};

@interface SFMovie : NSObject

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

@end
如何使用此方法获取评级?我不知道如何通过枚举。我的电话号码:

- (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];
}
这将产生以下警告: “SFMovie”没有可见的@interface声明选择器“getRating:rating:”


有人能给我介绍一个好的枚举教程吗?谢谢大家。

这与
枚举或参数类型无关。你的语法完全错误。声明的方法的名称是
getRating::
。正确的呼叫看起来像

[movie getRating:ratingDictionary :userRating];
将标签添加到第二个参数

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

 enum RatingsEnum ratings;
 NSInteger userRating = [movie getRating:ratingDictionary rating:userRating];

改变

 enum RatingsEnum ratings;
 NSInteger userRating = [movie getRating:ratingDictionary rating:userRating];


知道了。谢谢你,乔希。这真的与枚举无关。这只是一般的命名方法。是的,谢谢。在这里提问之前,我没有花足够的时间进行调试:(.在将问题放到stackoverflow上之后,我看到了错误:(
 enum RatingsEnum ratings;
 NSInteger userRating = [movie getRating:ratingDictionary rating:userRating];
 enum RatingsEnum ratings = userRating;
 NSNumber *ratingFromUser = [movie getRatingWithDictionary:ratingDictionary ratingEnum:ratings];