Свифтуй троичный оператор в поле зрения - PullRequest
2 голосов
/ 02 февраля 2020

внутри тела swiftyui, основываясь на значении news.urlToImage, мне нужно иметь возможность загружать любое другое представление (LOadRemoteImageView, которое является просто другим представлением, которое принимает необязательную строку URL для загрузки удаленного изображения), либо для отображения Текстовая строка "no image url".

В соответствии с приведенным ниже синтаксисом, он работает нормально

if news.urlToImage == nil {
Text("no image url")
}else {
    LoadRemoteImageView(withURL: news.urlToImage!).frame(width: 140, height: 140)
}

, однако при попытке встроенного кода происходит сбой без правильного сообщения об ошибке от intellisense

news.urlToImage == nil ? Text("no image") : LoadRemoteImageView(withURL: news.urlToImage!)

также пытался использовать карту для отображения любого из двух представлений, если urlToImage: String не равно nil, но также не работает

news.urlToImage.map {
$0 != nil ? LoadRemoteImageView(withURL: $0) : Text("no image")

}

1 Ответ

4 голосов
/ 02 февраля 2020

Это все о типах ... результат выражения строки должен генерировать один тип. Так что, если вам так нравится троичный оператор, вы должны использовать его как

news.urlToImage == nil ? AnyView(Text("no image")) : 
     AnyView(LoadRemoteImageView(withURL: news.urlToImage!))

или что-то подобное ... как для меня обычный if/else лучше.

...