2014-11-24 3 views
-1

Я пытаюсь создать приложение шума, но застрял. Я не разработчик, и я просто создать это для удовольствия!разбора вопрос Ожидаемый идентификатор или «(»

Проблема заключается в том, что я получаю сообщение об ошибке говоря: "Ожидаемый идентификатор или" (" о "@interface ViewController: NSObject: UIViewController". линии в ViewController.h

код является для ViewController.h является:

@interface ViewController : NSObject :UIViewController { 
} 

-(IBAction)sound1; 
-(IBAction)sound2; 
-(IBAction)sound3; 
-(IBAction)sound4; 
-(IBAction)sound5; 
-(IBAction)sound6; 

@end 

И код для ViewController.m:

#import "ViewController.h" 

@implementation ViewController : NSObject; 

-(IBAction)five { 
    CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    CFURLRef soundFileURLRef; 
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"sound1", CFSTR("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
} 

-(IBAction)cramp { 
    CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    CFURLRef soundFileURLRef; 
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"sound2", CFSTR("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
} 

-(IBAction)cycling { 
    CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    CFURLRef soundFileURLRef; 
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"sound3", CFSTR("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
} 

-(IBAction)iLoveBanking { 
    CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    CFURLRef soundFileURLRef; 
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"sound4", CFSTR("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
} 

-(IBAction)sound5 { 
    CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    CFURLRef soundFileURLRef; 
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"sound5", CFSTR("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
} 

-(IBAction)sound6 { 
    CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    CFURLRef soundFileURLRef; 
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"sound6", CFSTR("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
} 

@end 

ПОМОЩЬ !!!!!!

+0

Не забудьте принять участие в голосовании и принять ответ, который решил ваш вопрос. – Fogmeister

ответ

0

записи .h файл как этот

@interface ViewController :UIViewController 

    -(IBAction)sound1; 
-(IBAction)sound2; 
-(IBAction)sound3; 
-(IBAction)sound4; 
-(IBAction)sound5; 
    -(IBAction)sound6; 
    @end 

и .m файл заменить NSObject с UIViewController

#import "ViewController.h" 
     @implementation ViewController : UIViewController; 
+0

Ваша проблема решена или вам нужна дополнительная помощь. дайте мне знать –

1

@interface ViewController: NSObject: UIViewController

Это неправильно , вы не можете иметь несколько классов. Вы можете только подкласса от одного. Поскольку у вас есть некоторые IBActions в .m файле, я думаю, вы используете это как контроллер вида и в .h файле удалите NSObject. @interface ViewController : UIViewController

И в ом должно быть

@implementation ViewController

2

Этого код вопиет для рефакторинга, что будет ..

  1. Помощь найти то, что является причиной проблемы.
  2. С этим намного легче работать.

Здесь вы идете ...

#import "ViewController.h" 

@implementation ViewController 

-(IBAction)five { 
    [self playSoundWithName:@"sound1"]; 
} 

-(IBAction)cramp { 
    [self playSoundWithName:@"sound2"]; 
} 

-(IBAction)cycling { 
    [self playSoundWithName:@"sound3"]; 
} 

-(IBAction)iLoveBanking { 
    [self playSoundWithName:@"sound4"]; 
} 

-(IBAction)sound5 { 
    [self playSoundWithName:@"sound5"]; 
} 

-(IBAction)sound6 { 
    [self playSoundWithName:@"sound6"]; 
} 

- (void)playSoundWithName:(NSString *)name 
{ 
    CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    CFURLRef soundFileURLRef; 
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef)name, CFSTR("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
} 

@end 

Кроме того, ваш заголовок должен быть ...

@interface ViewController : UIViewController 

@end 

Если вы только вызов методов IBAction из кнопок, то вы не» t нужно вообще объявить их в заголовке.

+1

приятный и элегантный. – carlodurso

+0

у вас есть код рефакторинга :) проголосовали – GoodSp33d

+0

Спасибо за помощь, но, к сожалению, xcode говорит, что есть проблемы. Я хочу сделать, чтобы создать звуковую дорожку, в которой звучат шумы при нажатии кнопок. Не могли бы вы написать код для меня? После того, как вы написали код, я поместит звуковые файлы в нужные папки. @Fogmeister –

1

Вы не можете наследовать от двух классов; просто используйте UIViewController:

@interface ViewController : UIViewController 
+0

Спасибо, где я это положил? В .m или .h? @trojanfoe –

+0

@HarryTGraham В файле заголовка ('.h'). – trojanfoe