Swift

Swift:.mainFrameDocumentがダメなケース

WebViewがnilかどうか調べ、これをNSDataに変換したい。

追記(12/9/2016):このバージョンでの説明としては以下の記述に誤りはないのですが、何世代か前にソースコードを戻って確認したところ、DOMDocumentでここで問題があるとされるURLの編集・save・再表示がうまく行っていることがわかりました。差異を探すと厄介なので、その昔のソースコードから順次アップデート分を適用することにしました。

ところが、if xWebView?.mainFrameDocument as DOMDocument! == nil!が適切でないケースが発生しました。

それで、その修正の前にxWebView?.mainFrameDocument as DOMDocument!と表現していたデータ正しく入るかためすことにしました。

  • 変更前:(xWebView?.mainFrameDocument as DOMDocument!).webArchive.data
  • 変更後:xWebView?.mainFrame.dataSource?.webArchive.data

これでOKです。

このあと、.mainFrameDocument as DOMDocument!はnilであるが、WebViewのデータが存在するケースについてif文の条件を.mainFrame.dataSource?に変更して、このケースでもうまくいくか試します。

OKになりました。

追記(12/6/2016):saveするとき、

  • NG A.rcArray[inx][C.f10] = xWebView?.mainFrame.dataSource?.webArchive.data
  • OK A.rcArray[inx][C.f10] = (xWebView?.mainFrameDocument as DOMDocument!).webArchive.data

となりました。NGケースでは、webViewを修正した結果が反映されませんでした。

screenshot-2016-12-06-08-55-12

Categories: Swift, 技術

Tagged as: