Normal. Swift is case sensitive:
public var countrylist = ["test1", "test2", "test3"]
So, this will always fail
if countrylist.contains("Test1") {
change to
if countrylist.contains("test1") { // <<-- test1 and not Test1
But I don't understand the logic:
if countrylist.contains("test1") {
NavigationLink(destination: DataView()) {
Spacer()
Image(systemName: "percent")
}
}
else if countrylist.contains("test2"){
NavigationLink(destination: Text("test")) {
Text("test")
}
}
else if countrylist.contains("test3"){
NavigationLink(destination: Data2View()) {
Text("test")
}
}
Why testing countrylist to contain test1, test2, test3 ? It contains them all
You probably mean country ?
if country.contains("test1") {
NavigationLink(destination: DataView()) {
Spacer()
Image(systemName: "percent")
}
} else if country.contains("test2"){
NavigationLink(destination: Text("test")) {
Text("test2")
}
} else if country.contains("test3"){
NavigationLink(destination: Data2View()) {
Text("test3")
}
}
Then whole code becomes(always better to show the full code):
struct DataView: View {
var body: some View {
Text("DataView")
}
}
struct Data2View: View {
var body: some View {
Text("Data2View")
}
}
public var countrylist = ["test1", "test2", "test3"]
struct TestView: View { // start with Uppercase
var countries: [String] {
let lcCountries = listOfCountry.map { $0.lowercased() }
return searchText == "" ? lcCountries : lcCountries.filter {
$0.contains(searchText.lowercased())
}
}
private var listOfCountry = countrylist
@State var searchText = ""
var body: some View {
NavigationView {
List {
ForEach(countries, id: \.self) { country in
HStack {
Text("")
Section(header: Text(country.capitalized))
{
Text("test")
}
if country.contains("test1") {
NavigationLink(destination: DataView()) {
Spacer()
Image(systemName: "percent")
}
} else if country.contains("test2"){
NavigationLink(destination: Text("test")) {
Text("test2")
}
} else if country.contains("test3"){
NavigationLink(destination: Data2View()) {
Text("test3")
}
}
}
}
}
.searchable(text: $searchText)
.navigationTitle("testview")
.navigationBarTitleDisplayMode(.inline)
}
}
}