如何获取用户输入并将其传递给nsurl(swift)

时间:2014-06-08 12:12:02

标签: swift

我正在尝试获取用户输入(这将是url)并将其传递给NSURL。

目前,我定义了网址并初始化了nsurl。

我需要的是从文本字段中获取网址并使用nsurl初始化。

谢谢。

2 个答案:

答案 0 :(得分:2)

NSURL(string: self.myTextField.text)

答案 1 :(得分:0)

由于这是Google在如何从用户输入中获取NSURL的第一个结果,因此我建议您使用NSDataDetector API

此API的好处是,它将与用户认为是URL的任何东西一起使用,并且将提供匹配项中的NSURL对象。 [NSURL URLWithString:aString]实际上仅在用户不懒惰并输入正确的URL时有效。

NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
__block NSString* input = _urlField.stringValue;
__block NSURL* url = nil;
[detector enumerateMatchesInString:input options:0 range:NSMakeRange(0, input.length) usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {
    if (result != nil && result.resultType == NSTextCheckingTypeLink)
    {
        url = result.URL;
        // replace the input so that the scheme-check below can work on sane data
        input = [input substringWithRange:result.range];
    }
}];
if (url == nil) return;
// if the user did NOT explicitly start with http:
if ([url.scheme isEqual:@"http"] && input.length > @"http:".length && [[input substringToIndex:5] isEqual:@"http:"] == NO)
{
    NSURLComponents* comps = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
    comps.scheme = @"https";
    url = comps.URL;
}