NSTextViewの文字列を取得する。from Tiger to Leopard

NSTextViewから入力した書式付きのドキュメントを単なるテキストとして取り出す処理を、Tiger時代に、

NSTextStorage* textStorage = 
  [[NSTextStorage alloc] initWithRTF:aTextViewObj documentAttributes:nil];
[textStorage string];

みたいな感じで処理していてちゃんと動作していた(と思う)はずなんですが、Leopardに移行してみたらこれがちゃんと取り出せていません。Leopardで作成したドキュメントは上記のコードでもちゃんと取り出せるのですが、Tigerで作成していたドキュメントは上記のやり方ではnilとなってしまいます。該当のTextViewを例えば改行を入れるなどして編集し直して保存すればうまくいくのですが....

Tigerで保存したNSTextViewフィールドのダンプをとってみるとどうも書式情報が失われているような気がします。(あきらかにデータ量が少ない)仕方がないので、RTF決めうちは止めて

NSError* error;
NSTextStorage* textStorage = 
  [[NSTextStorage alloc] initWithData:aTextViewObj 
    options:nil documentAttributes:nil error:&error];
[textStorage string];

としてオプションもドキュメント属性も与えずフレームワーク任せにして対処しました。

このコードを実行する場面では、テキストデータだけ取り出せれば要件は満たすのでこれで十分なんですが、Tigerで入力した文字飾りや文字色なんかが画面表示上なくなっちゃてるのかな?すぐに試せるTigerがマシンが手元にないので確認していませんが(なにしろ自分のもっているデータはテキストしかはいっていないんで)、そうだとするとちぃと悔しい....

この記事のトラックバックURL:

http://hippos-lab.com/blog/trackback/209

Comments