Swift 4 WebKit webView не загружает URL с добавленным параметром

Просто не могу понять, что не так с этим webView, он просто остается пустым, без ошибок. Если я попробую без параметра идентификатора видео и просто «https://www.apple.com», это сработает. Любые идеи?

import UIKit
import WebKit

class VideoPlayerVC: UIViewController, WKUIDelegate {

    @IBOutlet weak var webview2: WKWebView!
    var videoId: String?

    override func viewDidLoad() {
      //test video id, this prints the booty workouts id on youtube!This target also opens on youtube the id on the end of this url: https://thewikihow.com/video_695PN9xaEhs
        if let videoId = videoId {
            print(videoId)
        }

        webview2.load(URLRequest(url: URL(fileURLWithPath: "https://thewikihow.com/video_\(videoId)")))
    }
}

Какой у вас идентификатор видео

Jogendar Choudhary 05.05.2018 15:19

Я думаю, вы не получаете идентификатор видео

Jogendar Choudhary 05.05.2018 15:23

да, я распечатываю его, и он дает правильное значение. Проверьте комментарий в коде, идентификатор видео: 695PN9xaEhs

Patrik Rikama-Hinnenberg 05.05.2018 15:33

@ PatrikRikama-Hinnenberg, вы должны! он будет добавлен как необязательный ("695PN9xaEhs") в URL-адрес видео, создайте строковый URL-адрес и распечатайте его перед передачей в URL-адрес

Sh_Khan 05.05.2018 15:35

@Sh_Khan да теперь я вижу, что он печатает необязательно! Хм. как сохранить развернутое значение перед его повторным использованием?

Patrik Rikama-Hinnenberg 05.05.2018 16:27

Почему вы используете URL(fileURLWithPath:), когда явно вводите сетевой URL-адрес для этого инициализатора? Вместо этого просто используйте URL(string:).

Dávid Pásztor 05.05.2018 17:29

@ DávidPásztor Спасибо, хороший вопрос :) начал с самого начала, и теперь я понял.

Patrik Rikama-Hinnenberg 05.05.2018 18:52

// testunwrapp videoID и testprint url if let videoId = videoId {print (videoId)} let targetURL = "(baseURL) (videoId!)" print (targetURL) // загрузить webView let url = URL (string: "(targetURL)" ) let request = URLRequest (url: url!) self.webview2.load (запрос)

Patrik Rikama-Hinnenberg 05.05.2018 18:53

@ DávidPásztor Спасибо, не знаю, как проголосовать за вас, ребята, но мое приложение теперь работает :)

Patrik Rikama-Hinnenberg 05.05.2018 19:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
9
21 436
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ваш идентификатор работает нормально:

override func viewDidLoad() {
    super.viewDidLoad()
    let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
    self.view.addSubview(webView)
    let url = URL(string: "https://thewikihow.com/video_695PN9xaEhs")
    webView.load(URLRequest(url: url!))
}

Спасибо, да, работает, но не с добавленным параметром. Похоже, мы рядом, но все еще далеко =) Вы, ребята, правы, это все еще идентификатор видео, который кажется необязательным. Как я могу сохранить развернутый идентификатор в новую переменную и использовать его в добавленном запросе @Sh_Khan

Patrik Rikama-Hinnenberg 05.05.2018 16:24

У меня есть tableview в предыдущем контроллере и videoId, предоставленный этим контроллером. Пользователь выбирает видео, и поэтому идентификатор необходим и создается в этом VideoPlayerViewController и добавляется к базовому URL-адресу: youtube.com/watch?v= \

Patrik Rikama-Hinnenberg 05.05.2018 16:50

ДА! @JogendarChoudhary Это также работает с параметром! Спасибо !

Patrik Rikama-Hinnenberg 05.05.2018 19:00

Проголосовал за это, но похоже, что моя плохая репутация не влияет на ответы на голосование!

Patrik Rikama-Hinnenberg 05.05.2018 19:01

Большое спасибо. Это помогает мне (:

Ronak Patel 28.09.2020 13:32

В моем случае я пытался загрузить сайт HTTP вместо HTTPS. Первоначально он ничего не загружал, но когда я использовал HTTPS, сайт загружался должным образом.

Другие вопросы по теме