Эта проблема не связана с SwiftUI. Проблема в том, что оператор if не имеет значения. В вашем примере
if product.price > 0 {
.foregroundColor(.black)
} else {
.foregroundColor(.black)
}
не оценивает вызов метода, который можно применить к представлению Text
.
Вот простой пример, который не будет компилироваться:
var uc = true
let string = "Hello World"
if uc {
.uppercased()
} else {
.lowercased()
}
Самое простое решение в вашем случае будет
Text("\(product.price),00 €")
.font(.caption)
.padding(2)
.foregroundColor(product.price > 0 ? .red : .green)
.cornerRadius(5)
с условным выражением в качестве параметра цвет переднего плана.