Swift4:Stringでwebページ読み込み

NSStringでしか読み込めないと思い込んでいたのがまちがいでした。Stringでも読み込めました。

次のことを新たに注意事項としました。

  • 検索エンジンに検索キーワードとパラメタを設定してURLを作成してwebページ(検索結果)を読み込む場合、Stringに読み込める場合とそうでない場合があります。google関連は読み込めないので、直接、WKWebViewに読み込む必要があります。
  • Stringに読み込めなかった場合、当然、当該htmlに対して編集・加工はできません。
  • macOS Safariでは、まだ未確認ですが、googleの仕様が変わったのでしょうか。それとも、WKWebViewの特性なのでしょうか。

Click SampleWebView4searchEngine Folder.
Source code to test NSString / String / searchEngine URL is @dropbox.
(評価用のソースコードはdropboxの
SampleWebView4searchEngine Folderにあります)

import UIKit //
import WebKit //
class MesaReadURL: UIViewController, WKNavigationDelegate, WKUIDelegate {//
let Com = MesaCommon() //
func CallReadURL(_ pURL:String, pEncode:UInt, pWeb: WKWebView, pAds:String,//<*Read URL or link clicked*>
pCustomFilter:NSMutableArray, pAllowDomain:NSMutableArray, pAllowFileter:NSMutableArray, pSave:UIButton) -> String {//
//🅿 Before to call CallReadURL:
// ① Set web page URL to currentURLにsave.
// ② Set “” to compURL. You can recognize whether or not a user click a link in didStartProvisionalNavigation.
//🅿 Set
// ① pURL to current URL

// ② “” to compURL so that you can separate your assignment from the clicked one.
//🍎 pURL: URL String
//🍎 pEncode: Encode value(UInt)
//🍎 pWeb: WKWebView
//🍎 pAds: 🌝:Block contents 🌚:Not block contents
//🍎 pCustomFilter: customFilter (NSMutableArray) to block contents.
//🍎 pSave: When xSave (UIButton) is RED, don’t make other UIButton effective.
//🅿 return info. “”: OK “\(error)”: NG
var wErrorInfo:String = “”                                  //Clear error info.
var wBuffer:String? = “”                                    //Clear Buffer.
//xWebView?.mainFrame.loadHTMLString(String(“”),baseURL:nil)//Clear webView.
pSave.setImage(#imageLiteral(resourceName: “save No”), for:.normal) //Set Start Reading(= Don’t run the other UIButton.)
let wURL:String? = pURL                                     //Check pURL
if wURL == “” || wURL == nil { return “URL ERROR” }         //”” or nil —> Error
else { }                                                    //
let wEncodedURL:String = Com.CallEncodeURL(wURL!)           //% encode
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
// do { wBuffer = try NSString(contentsOf:URL(string:wEncodedURL)!, encoding:pEncode) as String
do { wBuffer = try String(contentsOf:URL(string:wEncodedURL)!, encoding:String.Encoding(rawValue: pEncode))
} catch let error as NSError {                              //
pSave.setImage(#imageLiteral(resourceName: “save Yes”), for:.normal)//Reset reading URL
  wErrorInfo = “\(error)” + “🍎🍎” + pURL                   //
}                                                           //
if wErrorInfo != “” {                                       //<—Yes, error occurs.
  pWeb.load(URLRequest(url: URL(string:wEncodedURL)!))      //Read URL directly to WKWebView.
return “”                                                   //♻return♻ Return with normal state as
} else { }                                                  //
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
let wD = MesaBlock().CallDomainBlockCheck(wEncodedURL, pAllowDomain: pAllowDomain)//block contents?
var wBlocked:String = “”                                       //
if (wD.rState == true) && (pAds == “🌝”) {                     //
wBlocked = MesaBlock().CallBlockMain(wBuffer!,               //
pCustomFilter: pCustomFilter,//
pAllowFileter: pAllowFileter)//Personal contents block process.
  pWeb.loadHTMLString(wBlocked, baseURL:URL(string: pURL))     //Set the String to Web View.
} else {                                                       //<—Don’t block contents.
  pWeb.loadHTMLString(wBuffer!, baseURL:URL(string: pURL))     //Set the String to Web View.
}                                                              //
wBlocked = “”                                                //Not need any more.
return “”                                                    //♻return♻ Normal end. }
//————————————————————-//

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

 

Advertisements

Swift4:113 httpエラー

結局、このエラーは解決できそうにない。

残念なことですが、諦めました。

  • Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service
  • Could not signal service com.apple.WebKit.Networking: 113: Could not find specified service

それらしい解決方法を見つけました。しかし、解決できませんでした。

plist変更に関してはhttpを通すために対処済みなので解決策として不適当。subviewに入れる案に関しては対処方法不明。

案2を読むと、段々バグに思えてきて解決意欲がなくなりました。

Swift4:少し苦しい

Unable to simultaneously satisfy constraintsエラー(警告)が出てしまいます。

とりあえず解決しましたが、理由がわかりません。

調べたらpriorityをデフォルトの1000から変更すればいいとのこと。

1000から750にして1000に戻したら、警告は出なくなりました。納得しがたいところもあるのですが、念のために750に変更して、良し、としました。

参考:UIStackView 内の view を非表示にしたら、AutoLayout の警告が出る

Screenshot 2018-03-16 22.43.41

便利にMac:faviconの変更

wordpress.comのfaviconはカスタマイズ→サイト基本情報で変更することができます。

ここまでは簡単です。このあと、faviconが本当に変更されるには、とても時間がかかります。

私の場合、facebookが3日かかりました。

その間、safariが保有しているfaviconのキャッシュをクリアした方がいいか、いや、単純に待つべきだ、そんな記事をあちこちで読み、どうしたものか悩んでいました。

もしかすると、汎用ツールで変更した方が早いかもしれませんが、待つことも大事。そう再認識しました。戦うことだけが重要ではありません。

老松神社の白梅。DSC_0042

 

便利にMac:iPhoneに充電できない

一週間くらい前からiPhoneに充電できない問題が発生していました。時々、このアクセサリは使えません、とメッセージが出ました。

きょうはまじめに原因追求をしました。

症状としては、グリーンのアイコンがついたり消えたりします。たまたま、きょうはiMacもフリーズしてしまいました。おかしな話だとケーブルを入れ替えたらOKになりました。原因は、iPhoneへの差込口の金色の部分が1箇所剥離していました。

結局、iPhoneはどうなったかというと、バックアップファイルから全部restoreして、再設定することになりました。

iTunesや写真はまだNASに入れていますが、ほかは全部iCloudに置いています。手元にデータを持っていないと、復旧が楽です。iCloud、Dropbox、ブログを使い分ければ、手元に大容量HDDは不要です。データのバックアップやセキュリティ対策もクラウドを使った方が安心できます。ただし、抜かれるリスクがあるので重要データは注意が必要です。少なくても暗号化とパスワードをかけて置いた方がいいです。DSC_0024

徒然:ブログ 復旧

wordpress.comプレミアムを使ってようやく今までのレベルまで復旧できました。

こうした入れ替え作業は、持っている手を変えるだけの話なので非生産的に思えてなりません。しかし、不可避です。

きょうは、ブログの等幅フォントの問題を決着するのに集中しました。ひとつ残っている検索機能の実装をせず、機械的な作業に終始しました。

ここ三日間、15年ぶりに花粉症で死にそうになりました。息ができず、最後には、やたらと咳が出て、お腹が裂けそうでした。きょうは雨の後で治りました。集中力云々よりか、何も手につきません。

目、鼻、喉の部品交換をお願いしたい。

花屋さんでラナンキュラスが咲いていました。春ですね。

DSC_0043