Day: May 27, 2016

Swift:.webarchiveのsave / restore

考え違いがあるのかもしれませんが、.webarchiveのsaveがうまく行きません。

よくよく調べたら、読み込みに問題があることがわかりました。基本は次の3行だけ。

@IBOutlet var   xWebView:WebView?

xWebView?.mainFrame.loadRequest(NSURLRequest(URL:pNSURL))
let wdomDoc:DOMDocument = xWebView?.mainFrameDocument as DOMDocument!
let wData:NSData = wdomDoc.webArchive.data

どのような問題が起きるかというと、DOMDocumentに入れるときにnilだと怒られるのです。.webarchiveファイルは存在し、中身もあるのですけどね。

不具合解消には次のようにするしかありませんでした。理由はよくわかりませんが、.webarchiveファイルを読み込みながらrestore用の配列を作ると.webarchiveファイルを読み込みに失敗するというのが原因でした。

うまく行かなかった:

  1. .webarchiveファイルをひとつ読み込む。
  2. tableViewを参照し、restore用の配列を作成する。.webarchiveファイルも配列にstack。
  3. 前述した1と2のstackが終わったら書き出す。

うまく行った:

  1. すべての.webarchiveファイルを順次読み込み、webarchive配列にstackする。
  2. 前述した1.が終わった後、tableViewを参照し、webarchive配列からデータを取り出しながら、restore用の配列を作成する。
  3. stackが終わったら書き出す。