iOS

Swift4:URLに関わるバグ

webページ読み込みでURLをどうするかでバグが起きることがわかりました。

URLのエンコードとデコード

func CallEncodeURL(_ pString:String) -> String {             //<*Encode with %*>
return (pString as NSString).addingPercentEncoding(withAllowedCharacters:NSCharacterSet.urlQueryAllowed)!
}

func CallGetURL(_ pWeb:WKWebView, pURL:String) -> String {  //<*長い方のURLをStringで返す*>
let wWebURL:String          = String(describing: pWeb.url!).removingPercentEncoding!//webページのURL
let wURL:String             = pURL.removingPercentEncoding!//Current URL
if pURL.count <= 0          { return wWebURL }             //♻️return♻️
else                        { return wURL    }             //♻️return♻️
}

  • 検索パラメータと日本語が混在する場合、%エンコードしないと読み込みがうまくいかなかったのでそうしたのですが、問題は、URLを比較するとき、どちらかにしないとうまくいかないケースが出てきました。
  • もう一点、あるwebページを読み込むとき、2つのURLが存在するケースがありました。このままだと前後のページへの移動ができなくなるので、長いURLに合わせるようにしようとしましたがうまく行かなかったので、ケース的にはないはずの読み込みURLがない場合をwebページURL、それ以外は読み込みURLとしました。
    →そのアイデアではうまく行かないことが判明。次善の策は、いずれかと一致したときという条件でどうか?
  • なお、webページにURLが設定されていないこともあるようです。同上ロジックで短い方を採用する場合、注意が必要です。

Categories: iOS, Swift, 技術