-1

大家好,我需要這個代碼在這種情況下,第一個參數是新聞,第二個AIF u能做到這一點轉化爲函數有兩個參數?轉換代碼的功能

-(IBAction)news 
{ 
CFURLRef  soundFileURLRef; 
SystemSoundID soundFileObject; 
CFBundleRef mainBundle; 
mainBundle = CFBundleGetMainBundle(); 

// Get the URL to the sound file to play 
soundFileURLRef = CFBundleCopyResourceURL (mainBundle, 
              CFSTR ("News"), 
              CFSTR ("aif"), 
              NULL); 

// Create a system sound object representing the sound file 
AudioServicesCreateSystemSoundID (soundFileURLRef, &soundFileObject); 

AudioServicesPlaySystemSound (soundFileObject); 

return; 

}

回答

3

如果CFSTR的就是這個問題,那麼解決的辦法是:

-(void) playNews: (NSString*) news type: (NSString*) type 
{ 
    CFURLRef  soundFileURLRef; 
    SystemSoundID soundFileObject; 
    CFBundleRef mainBundle; 
    mainBundle = CFBundleGetMainBundle(); 

    // Get the URL to the sound file to play 
    soundFileURLRef = CFBundleCopyResourceURL (mainBundle, 
      (CFStringRef)news, 
      (CFStringRef)type, 
      NULL); 

    // Create a system sound object representing the sound file 
    AudioServicesCreateSystemSoundID (soundFileURLRef, &soundFileObject); 

    AudioServicesPlaySystemSound (soundFileObject); 
} 

(IBAction爲)聲明使得這裏沒有任何意義,因爲這種方法不能直接從Interface Builder中使用。

+0

你好,謝謝你的回答,這是我想要的,但是當我寫PlayNews時:@「news1」ofType:@「wav」; Xcode給我一個錯誤:預期';'在'type'之前,你能幫我解決這個問題 – 2010-10-04 20:24:53

+1

你需要把它放在尖括號中:[obj playNews:@「news」ofType:@「wav」]; – Codo 2010-10-04 21:17:10

0

如果這意味着要使用控制從用戶的一類接收了一個動作,那麼你可以做的唯一事情是-(IBAction)nameOfAction:(id)sender;。否則,您需要編寫命令以獲取您需要的兩個參數,並從IBAction中調用該參數。