Day: August 9, 2014

Swift:Webkit 5 (エンコーディングの仕方)

エンコーディングは、デフォルトをUTF-8として、メニューから選べるように変更しました。

前々から選択できるようにしたいと思っていたのですが、この際、仕様を変更することにします。仕様変更と言っても、まだ、Swfitが何か調べている段階なのでMesaClipper Swift版とするのは先の話になります。

スクリーンショット 2014-08-09 06.49.58

webページのタイトルは、wWebTitle = xbWebView.mainFrameTitle で拾えることを確認しました。しかし、1周遅れでしか拾えないというObjective-Cのときの同じ問題があります。それに加えて、didFinishLoadForFrameがSwiftに見当たらないことがもうひとつの問題です。今、調べています。

➡️埒があかないので調査は保留しました。Swift正式リリースか、GMCまで保留。

Swift:Webkit 4 (URL読み込みで落ちる理由)

URL読み込み時に総当たりでエンコーディングを試す方式がObjective-CでOKなのに、SwiftではNGになる理由がわかりました。

次の書き方で、UTF-8で正常なURL読み込みができます。

wContent = NSString.stringWithContentsOfURL(nsURL, encoding:currentEncode, error:&wError)//URL読み込み
xbWebView.mainFrame.loadHTMLString(wContent,baseURL:nil)//読み込んだ内容をWeb Viewに設定する。

Objective-Cでは、URLを読み込んだエリアwContent がnilのとき、エンコーディングがうまくいっていないことを意味します。それで、if wContent == nilで判定していたのですが、これがまちがいでした。

正しくは、if NSString.stringWithContentsOfURL(nsURL, encoding:currentEncode, error:&wError) = nilと書かないといけないでした。

これは、余計な変数を間に使わず直接調べるようにしろということなのでしょうか?