I'm trying to pass a function into my view, which also has a calculated property as an init value. Previously, the following code worked fine before attempting to add the function as an init property of my view:
var title: String
var desc: String {
get {
return self._desc
}
set {
self._desc = newValue
self.suggestions = newValue.components(separatedBy: "\n\n")
}
}
private var _desc: String = ""
private var suggestions:[String] = []
public init(title: String, desc: String) {
self.title = title
self.desc = desc
}
No Errors—everything works as expected. But then when I add my function to the view and in the init, suddenly it is erroring on the previous line, as if my computed property was the problem:
var title: String
var desc: String {
get {
return self._desc
}
set {
self._desc = newValue
self.suggestions = newValue.components(separatedBy: "\n\n")
}
}
var action: () -> Void
private var _desc: String = ""
private var suggestions:[String] = []
public init(title: String, desc: String, action: @escaping () -> Void) {
self.title = title
self.desc = desc // Errors here: "'self' used before all stored properties are initialized"
self.action = action
}
I've looked at all the posts I can find with this error, but they all deal with circumstances unrelated to what I'm seeing here.
Does anyone understand what is happening? Why would adding another parameter to a view trigger this error for a computed property when otherwise it worked fine?