1

我正在使用一个函数来修复无法直接加载到 WKWebView 中的 URL。

我依靠 NSDataDetector 来检查 URL 是否有效。

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 并且修复代码不会执行

如您所见,上面示例的问题是域名嵌套在我想要修复的字符串中,从而欺骗 NSDataDetector 获取实际 URL。

有没有办法利用 numberOfMatches 来解决这个问题?与原始字符串相关的 URL 是否存在最小匹配数?

4

0 回答 0