There's an ongoing debate about whether using classes over structures is a good or bad practice. Functional programming tends to favor value types, whereas object-oriented programming prefers classes.
In Swift, classes and structures differ by a number of features. You can sum up the differences as follows:
Classes support inheritance, structures don't
Classes are reference types, structures are value types
There's no universal rule that determines what's best to use. The general recommendation is to use the most minimal tool required to accomplish your goal, but a good rule of thumb is to use structures unless you need inheritance or reference semantics.