2011-07-11 8 views
1

私はMac OS Xですべての異なる音声を取得しようとしているアプリケーションを作成しており、性別で並べ替えています。私は、各性別(Male、Female、Novelty)の声を入れるために3つの可変配列を作成し、列挙型を使用してそれぞれを通過させて正しい配列に入れています。残念ながら、それは動作していません。ノベルティ・アレイを除く全てが空になり、ノベルティ・アレイは1つの声だけを持つ。誰かが私が間違っていることを見ていますか?私は以下のコードを掲載しました:Mac OS Xのテキスト音声ジェンダー

NSArray* voices = [NSSpeechSynthesizer availableVoices]; 
for(NSString* x in voices){ 

    NSDictionary* voiceInfo = [NSSpeechSynthesizer attributesForVoice:x]; 

    NSString* voiceName = [voiceInfo objectForKey:NSVoiceName]; 
    NSString* voiceGender = [voiceInfo objectForKey:NSVoiceGender]; 


    maleVoices = [[NSMutableArray alloc] init]; 
    femaleVoices = [[NSMutableArray alloc] init]; 
    noveltyVoices = [[NSMutableArray alloc] init]; 

    if (voiceGender == NSVoiceGenderMale){ 
     [maleVoices addObject:voiceName]; 

    } else if (voiceGender == NSVoiceGenderFemale) { 
     [femaleVoices addObject:voiceName]; 
    } else { 

     [noveltyVoices addObject:voiceName]; 
    } 
} 
+0

'=='の代わりに 'isEqual:'メソッドを使って 'voiceGender'変数を比較しようとしましたか? –

答えて

4

は、maleVoicesを割り当てfemaleVoices、及びforループのnoveltyVoices外部。ループの繰り返しごとに新しい空の配列を作成するだけです。

+0

ありがとう!それは私が必要としていたものでした! – thekmc

2

文字列との直接同等比較は通常、信頼できません。 -isEqualToString:方法を使用する:

if([voiceGender isEqualToString:NSVoiceGenderMale]){ 
    // etc. 
+0

ありがとう!それは私が持っていた主な問題を助けてくれませんでしたが、それは後で起こった別の問題を解決するのに役立ちました。 – thekmc