1

私はcoreDataからエンティティをフェッチし、fetchrequestの結果をNSMutableStringに保存してスピーチを行います。NSMutableStringと(文字)エンコーディングの問題:üの場合は U00fcを取得

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: 

それでも、何も働かなかった。

どうすればこの問題を防ぐことができますか?

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


} 
+0

それを見つけることができますか?それが文字列なら、なぜあなたは '-description'を呼び出していますか?文字列そのものを使うことができます。 –

+0

文字列です。私が 'description'を削除すると、** NSInvalidArgumentException '、reason:' - [__ NSArrayI length]:** – brush51

+0

待ちます。 'cardTitles'は配列です。そこで、 '-valueForKey:'を呼び出すと、各要素に対して '-valueForKey:@" cardTitle "'を呼び出すことで構築された配列が生成されます。それから、あなたはその配列についてその説明を求めています。そのコンテンツのフォーマットを行う可能性が非常に高いです。あなたは実際にその表現で何を達成しようとしていますか? –

答えて

2

私が書いた:

cardTitlesが配列です。したがって、-valueForKey:を呼び出すと、各要素に-valueForKey:@ "cardTitle"を呼び出すことによって構築された 配列が生成されます。 次に、その配列の説明を求めています。 のコンテンツの書式設定を行う可能性が非常に高いです。

brush51は書いた:componentsJoinedByString

を:働いて、エンコーディングの問題を解決しました。 今、私はそれらを正しく分割して、私がそれをきちんと使って のテキストを音声にすることができなければなりません。あなたはその答えとして、私はこの 質問をマークすることができますし、他の人との回答をすることができます速くcardTitleプロパティの種類は何

0

小さいものとUキャップとしてみてくださいメイク。

+0

私は自分で帽子を設定していない、私はコンソール出力でそれらを取得しています。 – brush51

+0

とにかく、それらの値をどこかに設定したでしょうか?そこにある値を変更して試してみてください。 – Ilanchezhian

+0

私はCoreDataからこの値を取得しています。 CoreDataではテキストが正しく保存されます。私は貯蓄しています: 'Für| | zuhören'。しかし、NSLogでは間違っています。あなたは私を持っていますか?私は** U ** – brush51

関連する問題