1

NSDataDetector を使用してテキスト フィールドから提供された URL を検証しようとしていますが、テキストの前に「http://」を含む URL を入力すると、常に有効な値が返されます。

i.e. http://someurl, http://someotherurl, etc.

参考までに - Web ブラウザは上記の形式を使用して URL を解釈できますが、NSURL はこの形式を使用すると毎回エラーを返します。アプリで提供された URL を使用してアクションを呼び出す必要があるため、提供された URL テキストから NSURL を作成するときに有効である必要があります。

これらの URL は実際には有効ではないため、これを修正する方法についてのアイデアはありますか?

これが私のコードです:

   linkDetector = NSDataDetector(types: NSTextCheckingType.Link.rawValue, error: nil)
    linkDetector?.enumerateMatchesInString(self.textField.text, options: NSMatchingOptions(0), range: NSMakeRange(0, countElements(urlString!)), usingBlock: { (result: NSTextCheckingResult!, flags, stop) -> Void in
            self.validatedUrlString = self.textField.text
    })
4

2 に答える 2

2

RFC 1304 セクション 3.5によると、有効なドメイン名展開 (http://プロトコル指定子の後) は次のようになります。

<domain> ::= <subdomain> | " "
<subdomain> ::= <label> | <subdomain> "." <label>
<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]

基本的に、これは.ドメイン名の要件ではないことを意味します。これの非常に一般的な例は、http://localhostno を含むもの.です。

于 2014-11-13T21:15:06.483 に答える
0

.google や .apple などの新しいトップ レベル ドメインがあるため、最近では「apple」だけで構成される URL が実際に有効な URL になる可能性があります。

実際、「 」と入力するとhttp://apple、その単純に見える有効な URL が Firefox で実際に正常に解決されます。

于 2014-11-13T21:01:24.843 に答える