iOS 7文本转语音崩溃



我在obj-c中制作ios应用程序,我希望电子邮件与我交谈。但是应用程序在这一行崩溃:[synthesizer speakUtterance:utterance];

这是说电子邮件的方法:

-(void) speakEmails {
    NSString *currentEmail = [summariesList objectAtIndex:0];
    NSLog(@"Email Being Spoken: %@", currentEmail);
    AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:currentEmail];
    utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
    AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc]init];
    [synthesizer speakUtterance:utterance];
}

这就是NSString currentEmail的含义:

 Email Being Spoken: {
    date = Today;
    sender = "tony@starkindustries.com";
    summary = "Blah Blah Blah Blah";
    type = regular;
}

我一直得到错误-[__NSCFDictionary length]: unrecognized selector sent to instance 0x16528b30。我不知道为什么会这样。

您将currentEmail设置为字典(解析JSON)而不是字符串。试试这个:

NSString *currentEmail = [[summariesList objectAtIndex:0] objectForKey:@"sender"];

为了确保将来不会发生这种情况,您可以像这样做一个快速检查:

-(void) speakEmails {
    NSString *currentEmail = [summariesList objectAtIndex:0];
    NSLog(@"Email Being Spoken: %@", currentEmail);
    if (currentEmail != nil)
    {
        AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:currentEmail];
        utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
        AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc]init];
        [synthesizer speakUtterance:utterance];
    }
}

最新更新