URL (fileURLWithPath: snap.urlImage) Команда не работает должным образом - PullRequest
0 голосов
/ 16 октября 2019

Я строю (учебная цель) решение, похожее на Snapchat. Идея состоит в том, чтобы отправить изображение другому человеку, который может его открыть. Информация сохраняется в Firebase-Realtime-Database и после щелчка получателем показывает это изображение.

Я использую Xcode 11.2, Swift4, IOS13, macOS Catalina, SDWebImage (5.2.3)

override func viewDidLoad() {
super.viewDidLoad()

details.text = snap.description

let url = URL(fileURLWithPath: snap.urlImage)
print("URL 1 \(url) - end")
print("URL 2 \(snap.urlImage) - end")

imagem.sd_setImage(with: url) { (image, error, cache, url) in
 print("Message 1")
}

}

URL-адрес, сохраненный в Firebase, в порядке и работает нормально (я могу скопировать / вставить в свой браузер и загрузить изображение).

Ниже приведен результат из приведенного выше кода: print ("URL 1 (url) - end"), результат https: /firebasestorage.googleapis.com/v0/b/snapchat-xxxxx.appspot.com/o/images%252FBA5008FB-7D2E-4091-B995-E37879EAB1A2.jpg%3Falt=media&token=72146333-fe8e-4add-be52-1caf037cd1d6 - файл: /// - end

print ("URL 2 (snap).urlImage) - end ") https://firebasestorage.googleapis.com/v0/b/snapchat-xxxxx.appspot.com/o/images%2FBA5008FB-7D2E-4091-B995-E37879EAB1A2.jpg?alt=media&token=72146333-fe8e-4add-be52-1caf037cd1d6 - end

Как видите, после использования URL (fileURLWithPath: snap.urlImage)" - file: /// "добавляется кконец константы «url».

Если я заменю url на snap.urlImage в строке sd_setImage, он не будет работать (imagem.sd_setImage (with: snap.urlImage) ...)

У кого-нибудь было бы представление о том, что происходит?

Спасибо

1 Ответ

0 голосов
/ 16 октября 2019
init(fileURLWithPath path: String)

Инициализирует вновь созданный URL-адрес файла, ссылаясь на локальный файл или каталог по пути

init (fileURLWithPath :) интерпретирует переданную строку как локальный путь к файлу, который я не используюне думаю, что ты хочешь. Вы можете использовать это, если, например, вы хотите записать этот файл на локальный диск.

На самом деле вы ищете URL-путь к файлу на сервере.

let urlToImage = URL(string: snap.urlImage)

имея в виду, что будет возвращаться необязательный параметр, который наилучшим образом защитит ваш код, как этот

if let urlToImage = URL(string: snap.urlImage) {
   imagem.sd_setImage(with: urlToImage)...
} else {
   print("could not find file at that url") //or some other error
}

также, я бы предложил другое имя переменной для удобства чтения ... urlImage звучит так, как будто это Image или NSImage, а не путь. imageUrl будет лучшим именем, так как это URL к изображению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...