2014-01-20 4 views
8

Заголовочный файл выглядит как:как передать перечисление в качестве параметра для работы в ObjectiveC

enum RatingsEnum 
{ 
    userRating, 
    criticRating, 
}; 

@interface SFMovie : NSObject 

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

@end 

Как я могу использовать этот метод 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]; 
} 

Это дает следующее предупреждение: Нет видимых @interface для «SFMovie» заявляет селектор «getRating: рейтинг:»

Может кто-нибудь вести меня к хорошему перечислений учебник ? Спасибо вам всем.

+0

Это действительно не имеет ничего общего с перечислениями. Речь идет о методах наименования в целом. – Chuck

+0

Да, спасибо. Я не тратил достаточно времени на отладку, прежде чем задавать вопрос здесь :(Я видел ошибку сразу после того, как поставил вопрос о stackoverflow :( –

ответ

14

Изменить

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

в

- (NSNumber *)getRatingWithDictionary:(NSDictionary *)movieDic ratingEnum:(enum RatingsEnum) ratingEnum; 

Изменить

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

в

enum RatingsEnum ratings = userRating; 
NSNumber *ratingFromUser = [movie getRatingWithDictionary:ratingDictionary ratingEnum:ratings]; 
1

Это не имеет никакого отношения к enum или типу параметра вообще. Ваш синтаксис просто неверен. Имя объявленного метода: getRating::. Корректный вызов выглядит

[movie getRating:ratingDictionary :userRating]; 

Добавить метку второго параметра

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

Получил. Спасибо, Джош. –

Смежные вопросы