Obj.C

obj.C:見えてきた出口➡OK

ようやく出口が見えてきました。本当に覚えが悪く、時間がかかっています。多分、これでいいと思うのですが、・・・・
➡textStorageを戻す方法が”?”だとむずかしいかも・・・・

➡実装しなおしました。この方法でOKになりました。デバッグしてからコードをアップします。やれやれです。

今までサンプルプログラムを修正しながら、
① webサイトのURLを読み込み
② .rtf / .rtfd / .txt / .dataのファイルでの書き込み
③ 作成したファイルの読み込みと画面の文字列を修正等
について試してきたのですが、ようやくこうすればできるという見通しが立ちました。

結論は、次の通りです。次のようにすれば、webサイトを読み込み、これに修正を加え、保管できます。

  • URLを読み込み(stringWithContentsOfURL)、work fileに.rftdで書き込む(writeToFile)。Text Viewには表示しない。
  • work fileを読み込み、Text Viewに表示する([textViewAddr readRTFDFromFile:mcFilePath])。
  • textStorageを.data(バイナリ)で書き込む([NSKeyedArchiver archiveRootObject:[textViewAddr textStorage]copy]   toFile: mcFilePath] )

関連する機能として次のものが必要になります。

  • work fileの削除。Min.必須。
  • .dataの読み込み。Min.必須。
  • 先の話として、.dataの一覧の表示、ファイルの選択・追加・削除などができたほうがいい。いわゆるファイル管理が必要。

取り急ぎ、この仕様でプログラムを修正することにします。

気づくのが遅いと言えばそれまでなのですが、Text Viewがアトリビュートなしの文字列だけをハンドリングするためのものだとわかるのに時間がかかり過ぎました。3つのファイルタイプを同時にハンドリングしたことも物事を複雑にしました。おまけに新旧プログラムをフォルダ名を変えずに同時に動かしたことも、動きを理解する障害になりました。

しかし、ファイルタイプを次々に変えたときにtextStorageが読み込みファイル通りにならないケースの発見は、何がその原因であれ、転ばぬ先の杖になると思います。言い換えると、表示しなくてもいいものを表示するべきでないというのは、重要な学習のひとつになります。

宿題としては、次の2点がありますが、取り急ぎ、最優先で修正をして行きます。
① Web ViewのようにURLを簡単に再現する方法がないか?
② work fileを介さない方法は何か?

現時点のソースはここです。それぞれの機能は動いていますが、次のような問題があります。

  • .data以外は画面の文字列修正結果がファイルに正しく反映されない。
  • .rtfdは、URL読み込み/save➡読み込み/表示➡修正➡.rtfd書き込みとすると、アトリビュートなしの文字列がsaveされてしまう。
  • .dataも、file typeを変えて読み書きしたあとで.dataを再読み込みすると、読み込んだ内容と表示内容が異なる(うまく行かない)。saveしないで、再起動すれば.dataのファイル内容は正しいことがわかる。

IMG_3050病院の花 2014.1.22

Categories: Obj.C, 技術