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]];

TextToSpeech

    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"を呼び出すことによって構築された配列が生成されます。次に、その配列に説明を求めます。その内容のフォーマットを行う可能性が非常に高いです。

Brush51は書いた:

componentsJoinedByString:動作し、エンコーディングの問題を解決しました。今、私はそれらを正しく分割して、テキスト読み上げにきれいに使用できるようにする必要があります。あなたはそれで答えることができますか?私はこの質問を答えたものとしてマークすることができ、他の人はそれをより速く見つけることができます

于 2012-04-10T12:54:35.097 に答える
0

U小さいキャップでそのキャップを作ってみてください。

于 2012-04-10T10:45:11.407 に答える