So I want to utilize something that has the best performance, but also check for both nil
and also not empty
on strings.
Example: If the string is not nil, but also not empty, show showLinkButton
.
So I was able to use this code:
if let website = item.website, !item.website.isEmpty {
showLinkButton
}
Where I have a @ViewBuilder
such as this:
@ViewBuilder private var showLinkButton: some View {
Button(action: {
self.isBrowsingWebsite = true
}, label: {
Image(systemName: "link")
.resizable()
.scaledToFit()
.frame(height: 14)
.fontWeight(.bold)
.padding(5)
})
.foregroundColor(.secondary)
.background(
RoundedRectangle(cornerRadius: 5, style: .continuous)
.fill(Color(.systemGray6))
)
.sheet(isPresented: $isBrowsingWebsite) {
SafariViewWrapper(url: URL(string: item.website)!)
}
}
Problem:
The problem is that I'm not really doing anything with let website
, so I am getting the following errors:
Immutable value 'website' was never used; consider replacing with '_' or removing it
&& Replace 'let website' with '_'
.
Questions:
- If I utilize
if _ = item.website, !item.website.isEmpty
, will this hurt performance? Is there a better way to do it? - Since I will have multiple if statements, would
if _ = ...
have negative side effects being called 5 times in the same View.
CodePudding user response:
Use optional chaining to call isEmpty
and compare explicitly to false
:
if item.website?.isEmpty == false {
print("not nil and not empty")
}
Note:
If you want to check if a value is nil
, just compare it to nil
. Don't use if let
unless you want to use the unwrapped value.