Swift version: 5.10
This is a common error, and one you can fix in just a few seconds. Swift has very strict rules about property initialization: if you give a class any properties without a default value, you must create an initializer that sets those default values.
There are two ways to solve this problem: either provide a default value for your property when you define the property, or create a custom init()
method to set the value.
First, identify the problem property. Look for things like this:
class ViewController: UIViewController {
var username: String
}
That defines a new property but doesn't give it an initial value, so Swift will refuse to build the app.
The simple solution is just to give your property a sensible initial value when it's defined, like this:
class ViewController: UIViewController {
var username: String = "Anonymous"
}
The slightly more complicated solution is to create a custom initializer that gives properties default values in one place, then calls super.init()
. When working with UIViewController
and storyboards, the initializer you will want to override should look like this:
required init?(coder aDecoder: NSCoder) {
self.username = "Anonymous"
super.init(coder: aDecoder)
}
Remember: you must initialize all your own properties before calling super.init()
or any other methods.
SPONSORED Get accurate app localizations in minutes using AI. Choose your languages & receive translations for 40+ markets!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 7.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.