Obj.C

obj.C:コード全体を再整備して前進

面倒だと思ったのですが、コードを見直し、UIからファイルタイプを決められるように仕様を変更しました。

仕様変更をしたというよりか、仕様を確定させたというのがより正しいかもしれません。

変更点:

  • read/writeするファイルタイプをpop-upメニュを追加して選択できるようにしました。
  • .txt、.rtfd、.dataの3種類を選択でき、選択時にファイルを読み込むようにしました。
    NSHomeDirectory()を利用してdesktopまでのパスを決定
    (NSPopUpButton*)senderの[btnType indexOfSelectedItem]何番目の項目かインデクスに設定
    ③ caseで振り分けてファイルパスを確定してread
  • .dataはまだそれむけのread/writeを作っていないので、.txtと.rtfdの評価が終わってから作り込む予定です。
  • IBActionが残っていたので(void)に変更しました。IBActionはとは? あれです。

学習したこと:

  • ヘッダの変数に常数定義をするとbuild errorにななりました。
  • (textView == nil)([textView string] == nil)では意味が違うと知っていても、ついやってしまいます。
  • – (void)ExecType:(id)senderの入力側を(NSPopUpButton*)senderと書いて実際に使うことができるのですね。

これから調べないといけないこと:

  • 現象面での再確認を羅列します。
  • プログラム開始➡URLを読み込む①➡.rtfdにsave②➡プログラム終了➡プログラム開始➡.rtfdを読み込む③の操作の後の画面の表示結果
    ①の時点:htmlのまま描画(下図)
    ②の時点:htmlのまま描画(下図)スクリーンショット 2014-02-07 16.17.29
    ③の時点:htmlが解釈されて描画(下図)
    スクリーンショット 2014-02-07 16.18.27
  • プログラムを立ち上げた直後のpop-upボタンが.txtになっている。設定しているデフォルトは.rtfdなのでこれはおかしい。
    NSMenuItemでファイルタイプのオブジェクトを定義し、[mcButtonMenurtfd setState:NSOnState]; のようにOn/Offして対応済み。
  • ここまでの問題点はファイルタイプボタンを正しく表示・チェックが入るように対策を入れたらOKになりました(多分)。.txtと.rtfdの描画に一貫性ができたのでOKとみなしていいと考えています。しかし、本当はどうなのでしょうね?
  • それでは、次の課題として、.rtfdを修正できるかどうか?

問題点:

  • 明確になった問題点は、入力した文字列を含む表示された文字列を修正したとき、その修正が反映されないことです。これは、修正内容をファイルに正しく書き込んでいないか、書き込まれたファイルを正しく読み込めていないかです。
  • ここで.data & バイナリ変換なのでしょうか?次にこれを調べることにします。あと、先の[mcButtonMenurtfd setState:NSOnState];が本当にうまく行っているか再確認します。

対策:

  • まず、.rtfを機能追加し、MS Wordで正しく開き、表示されることを確認しました。ということは、現在の読み込み方法では.rtfは正しくデコードできていないことになります。
    ➡.rtfは正しく書き込まれている=MS Wordで開ける。
    ➡しかし、.rtfは正しく読み込めていない。
    ➡では、.txtと.rtfdは正しく読み込めているのか? Yes。
    ➡よって、.rtfの読み込み不良を追い込めればよい。