Показать изображение из URL в подробном представлении после выбора в tableView

У меня есть tableView, который отображает список дорожных камер, проанализированных из XML-файла. Когда я выбираю ячейку, она отправляет ImageURL, имя дороги, координаты и т. д. с помощью метода prepareForSegue.

В моем detailviewcontroller я объявляю входящие значения следующим образом:

var selectedFeedURL = String()
var selectedFeedRoadname = String()
var selectedFeedLongitude = String()
var selectedFeedLatitude = String()

У меня нет проблем с печатью всех значений в журнале или установкой их в качестве меток. Проблема возникает, когда я пытаюсь загрузить selectedFeedURL (который является URL-адресом изображения, например: http://webkamera.vegvesen.no/kamera?id=559847) и установите мой imageView..

В моем viewDidLoad у меня есть следующий код, который должен загрузить изображение и установить его в мой imageView с именем cameraImageView.

if let url = NSURL(string:"\(selectedFeedURL)") {
    if let data = NSData(contentsOfURL: url){
        print("Suksess")
        cameraImageView.image = UIImage(data: data)
    }   
}

Мой imageView остается пустым, и я не получаю никаких ошибок или жалоб в области отладки. Если я распечатаю selectedFeedURL, ссылка будет там.

Странная часть заключается в том, что если я изменюсь

NSURL(string:"\(selectedFeedURL)")

to

NSURL(string:"http://webkamera.vegvesen.no/kamera?id=559847")

В основном изменяя переменную на URL-адрес камеры, она работает отлично.

Soo ... любые предложения о том, что проблема может быть?

Очень признателен :)


person Christian Isnes    schedule 15.08.2015    source источник
comment
Это не ваша проблема, но нет необходимости выполнять интерполяцию строк для String. NSURL(string: selectedFeedURL) должно быть достаточно.   -  person vacawama    schedule 15.08.2015
comment
Распечатайте значение selectedFeedURL. Могут ли в нем быть непечатаемые символы?   -  person vacawama    schedule 15.08.2015
comment
Даже пробелы до или после строки URL-адреса могут испортить это. сделайте print("***\(selectedFeedURL)***") и посмотрите, есть ли пробелы до или после URL-адреса в вашей переменной.   -  person vacawama    schedule 15.08.2015
comment
@vacawama Хорошо, это скопировано прямо из области отладки: ***webkamera.vegvesen.no /kamera?id=113094 *** Это создает разрыв строки и много пробелов, странно. Хорошо, разрыв строки не отображается в разделе комментариев, как и все пробелы. (всего 5 мест)   -  person Christian Isnes    schedule 15.08.2015
comment
Попробуйте мой ответ. Он обрезает пробелы и добавляет необходимые "http://".   -  person vacawama    schedule 15.08.2015


Ответы (1)


Если в начале и в конце строки URL есть пробелы и символы новой строки, это не сработает.

Пытаться:

selectedFeedURL = selectedFeedURL.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet())

if let url = NSURL(string: selectedFeedURL) {
    if let data = NSData(contentsOfURL: url){
        print("Suksess")
        cameraImageView.image = UIImage(data: data)
    }
}
person vacawama    schedule 15.08.2015
comment
Успех! Хотя мне пришлось удалить код http://, чтобы заставить его работать, он создал двойной тег http :) Еще раз спасибо ^_^ - person Christian Isnes; 15.08.2015
comment
Пожалуйста. Я обновлю свой ответ, чтобы отразить ваш комментарий. - person vacawama; 15.08.2015