簡體   English   中英

iOS 7文字轉語音崩潰

[英]iOS 7 Text to Speech Crash

我正在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];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM