Как получить значения из NSString

У меня есть NSString, Это URL, который я получаю при использовании Universal Links. Я хочу получить значение id из него. Есть ли какие-либо прямые методы в SDK или нам нужно использовать componententsSeparated Строковые значения?

Ниже приведен NSString / URL:

https://some.com/cc/test.html?id=3039

Я хочу получить две вещи: "test" из test.html и значение "id".

3 ответа

Решение

Использование NSURLComponents создан из NSURL или же NSString вашего URL.

Оттуда вы можете использовать path чтобы получить /cc/test.html часть. Тогда используйте lastPathComponent получить test.html и, наконец, использовать stringByDeletingPathExtension получить test,

Чтобы получить значение "id", начните с queryItems значение. Итерируйте этот массив, находя NSURLQueryItem с именем "id", а затем получить его значение.

Мы можем сделать расширение

  extension URL {              
      func getParamValue(paramaterName: String) -> String? {
          guard let url = URLComponents(string:self.absoluteString ) else { return nil }
             return url.queryItems?.first(where: { $0.name == paramaterName})?.value
      }
  }

Теперь вы можете позвонить, как показано ниже

let someURL = URL(string: "https://some.com/cc/test.html?id=3039&value=test")!
someURL.getParamValue("id") // 3039
someURL.getParamValue("value") // test

Вы могли бы создать NSURLComponents из строки URL получить параметры, вызвав queryItems метод. Вернет массив NSURLQueryItem

NSURLComponents *components = [NSURLComponents componentsWithString:@"https://some.com/cc/test.html?id=3039&value=test"];
    NSArray *array = [components queryItems];
    for(NSURLQueryItem *item in array){
        NSLog(@"Name: %@, Value: %@", item.name, item.value);
    }
    NSLog(@"Items: %@", array);
Другие вопросы по тегам