WKWebView に直接読み込めない URL を修正する関数を使用しています。
URL が有効かどうかを確認するために、NSDataDetector に依存しています。
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error];
NSUInteger numberOfMatches = [detector numberOfMatchesInString:URLString options:0 range:NSMakeRange(0, URLString.length)];
if (!error && numberOfMatches > 0) {
// Valid URL
}
else {
// Invalid URL
// Custom code runs here to fix it...
}
これが機能しない例を次に示します。
"/d.scdn.com/images/photo.jpg" ---> "http://stockimages.com/d.scdn.com/images/photo.jpg"
これは変換を行う方法ですが、代わりに認識します
"/d.scdn.com/images/photo.jpg"
有効な URL として修正コードが実行されません。
上記の例でわかるように、ドメイン名が文字列内にネストされていることがわかります。これを修正して、実際の URL の NSDataDetector をだますようにします。
この問題を解決するために numberOfMatches を利用する方法はありますか? 元の文字列との関係で有効な URL の一致の最小数のようなものはありますか?