1

我正在从 coreData 中获取我的实体并将 fetchrequest 的结果保存到 NSMutableString 中,以用于文本到语音。

self.ttsInboxCards = [[NSMutableString alloc] initWithString:@""];  
[self.ttsInboxCards appendString:[[entitySetsCards valueForKey:@"cardTitle"] description]];

在 NSLog 我得到这个值:

F\U00fcr | schl\U00e4ge | zuh\U00f6ren  

应该是:

Für | schläge | zuhören  

我已经尝试了很多方法来获得正确的编码,例如:

stringWithUTF8String:  

等等,但没有任何效果。

我怎样才能防止这个问题?

编辑1:

我从 coreData 获取值是这样的:
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntitySetsCardsInbox" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSPredicate *inboxPred = [NSPredicate predicateWithFormat:@"archived == 0 AND cardId != 0"];


[fetchRequest setPredicate:inboxPred];

NSSortDescriptor *sortDescriptor2 = [[[NSSortDescriptor alloc] initWithKey:sortString ascending:sortAsc selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor2, nil] autorelease];
[fetchRequest setSortDescriptors:sortDescriptors];

NSError *error = nil;
NSArray *cardTitles = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];



[self.ttsInboxCards appendString:[[cardTitles valueForKey:@"cardTitle"] description]];

文字转语音

    if (isSpeaking) {
    [vocalizer cancel];
    isSpeaking = NO;
}
else {
    isSpeaking = YES;
    vocalizer = [[SKVocalizer alloc] initWithLanguage:@"de_DE" delegate:self];
    [vocalizer speakString:tmp];


}
4

2 回答 2

2

我写:

cardTitles 是一个数组。因此,在其上调用 -valueForKey: 会生成一个通过在每个元素上调用 -valueForKey:@"cardTitle" 构建的数组。然后你问那个数组的描述。它很可能会对其内容进行格式化。

刷子51 写道:

componentsJoinedByString:工作并解决了编码问题。现在我必须正确拆分它们,以便我可以干净地将它用于文本到语音。你能回答一下吗,这样我就可以将此问题标记为已回答,其他人可以更快地找到它

于 2012-04-10T12:54:35.097 回答
0

U用较小的帽子制作帽子并尝试。

于 2012-04-10T10:45:11.407 回答