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