【问题标题】:Add iOS 7 code to iOS 6 project将 iOS 7 代码添加到 iOS 6 项目
【发布时间】:2013-12-11 12:49:08
【问题描述】:

我了解 TTS 仅在 iOS 7 中可用在否决投票之前请通读。

我的一个客户想要在基于 iOS 6 的现有项目中添加文本转语音功能。我知道在 iOS 7 中我们已经内置了 TTS,所以我想使用它。

当项目基于 iOS 7 时,以下代码可以正常工作。

AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"Please raise my salary!!!"];
[synthesizer speakUtterance:utterance];

但我无法将此代码添加到基于 iOS 6 的现有项目中。

我正在使用这种thread 方式。我错过了什么吗?或者这个内置的 TTS 是不同的东西?

【问题讨论】:

  • “适用于 iOS 7.0 及更高版本。”
  • 伙计们,他想在应用程序中包含代码,但是在运行 iOS 6.0 时使 无法访问
  • 你能做的最好的就是测试该功能是否可用,只有在可用时才使用它。
  • 这不会让您编译可以在任一环境中运行的单个应用程序。您需要使用运行时测试。
  • @brianLikeApple 您是否在项目中链接了 AVFoundation?

标签: ios objective-c


【解决方案1】:

由于您尝试运行无法在 iOS 6 上运行的代码,因此您需要进行运行时检查,以确保您可以运行您尝试运行的代码。一个快速的方法是检查该类是否可用:

if([AVSpeechSynthesizer class]) {
    AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
    AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"Please raise my salary!!!"];
    [synthesizer speakUtterance:utterance];
} else {
    // Feature not available, do something else
}

无论代码是否编译,您都需要这样做。

如果您的代码甚至没有正确编译,那么您可以检查以下几点:

  • 您的基础 SDK 是否设置为 iOS 6.0?
  • AVSpeechSynthesizer 是 AVFoundation 的一部分 - 您是否将项目链接到它?

【讨论】:

  • 哎呀!,是的,你是对的。我做了#import 但忘记将 AVFoundation 链接添加到我的项目中。
【解决方案2】:
if ( [[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f ){

    AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
    AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"Please raise my salary!!!"];
    [synthesizer speakUtterance:utterance];
}
//And an else block if you have a back-up plan

【讨论】:

  • 你试过了吗?是的,我知道。从我这边行不通。否则我不会问这么愚蠢的问题。
  • 此代码无法运行,因为 AVSpeechSynthesizer 需要 iOS7 (developer.apple.com/library/IOs/documentation/AVFoundation/…)。这只会修复 iOS6 上的编译错误。您需要为 7 岁以上的操作系统找到替代方法。
  • 您的代码是正确的。所以我放弃你的投票。但是 otiose 找到了重点,所以我给了他接受的答案:)
猜你喜欢
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多